同期されたメソッドがあり、そのメソッド内で、次のようにハッシュマップを更新するとします。
public synchronized void method1()
{
myHashMap.clear();
//populate the hashmap, takes about 5 seconds.
}
これで、method1が実行され、ハッシュマップが再入力されているときに、ハッシュマップの値を取得しようとしている他のスレッドがある場合、それらはブロックされると思いますか?
同期メソッドを使用する代わりに、ハッシュマップを以下のようにConcurrentHashMapに変更した場合、どのように動作しますか?
public void method1()
{
myConcurrentHashMap.clear();
//populate the hashmap, takes about 5 seconds.
}
Collections.synchronizedMapを使用するとどうなりますか?同じですか?