の値オブジェクトをロック:私たちは私たちが学んだことはできませんHashMapの、のエントリのみをロックする同期ブロックを使用できるかどう Can we use Synchronized for each entry instead of ConcurrentHashMap?は、この記事でのConcurrentHashMap
私は尋ねました。今、私の質問は、ArrayList、またはTreeMap型の値を持つConcurrentHashMap(hashMapではない)がある場合、その方法を(同期を使用して)使用できるかどうかです。ここに意味するもの:
ConcurrentHashMap<String, ArrayList<String>> map = new ConcurrentHashMap<>();
synchronized (map.get("key")) {
//do something with the array thread-safely,
}
安全ですか?私が求めているのは、テストによってこの種の問題をチェックする方法がわからないということです。
_それは安全ですか?_あなたが値で何をしているのかわからない限り、_は答えられません。あなたのコードの別の部分はそれらを別々に使用していますか?彼らはそれらにアクセスする前に、対応するモニターにロックされていますか? –
あなたは正しいです。私はarraylistを使用して同期ブロックにアクセスしたいときはいつでもスレッドセーフであることを意味しますか? –