ハッシュテーブルが同期されているため、ハッシュテーブルはスレッドセーフです。このコードスニペットを検討してくださいハッシュテーブルとJavaでの同期
if(!hashtable.contains(key)){
hashtable.put(key,value);
}
ハッシュテーブルの操作が同期されていない可能性があります。たとえば、Thread t1
がhastableにアクセスしてキーをチェックし、同時にThread t2
がt1がputを実行する前にキーをチェックするとします。今度は2つのスレッドがifブロックの内側にあり、キー値の上書きが発生します。
同期ブロックが必要です。
synchronized {
if(!hashtable.contains(key)){
hashtable.put(key,value);
}
}
この理解は正しいですか?またはhastablesの上で実行される操作上のhastables安全です。私はこれを読んでいる間、この疑いを持っていますpost on race condition
はい正しいです。 – SJuan76