5

並行HashMapに格納されている場合、POJOオブジェクトの可変フィールドはスレッドセーフですか?

または、フィールドをロックで保護するか、フィールドを揮発性にして、すべてのスレッドで更新が確実に見られるようにする必要がありますか? フィールドを揮発性としてマークするだけで、すべてのスレッドが更新を確認できるようになりますか?

4

1 に答える 1

13

並行HashMapに格納されている場合、POJOオブジェクトの可変フィールドはスレッドセーフですか?

いいえ。スレッドセーフなのは、ハッシュマップ自体の操作だけです。

または、すべてのスレッドで更新が確実に見られるように、フィールドをロックするか、揮発性にする必要がありますか?

はい。ただし、これで十分というわけではありません。

フィールドを揮発性としてマークするだけで、すべてのスレッドが更新を確認できるようになりますか?

フィールドの種類によって異なります。参照型の場合、オブジェクトが変更可能かどうかにも依存します。


アドバイス:

すべてを揮発性または同期化するなどの単純な戦略でスレッドセーフに対処することはできません。実際にテクノロジーを理解し、アプリケーションの性質も理解する必要があります。つまり、同時実行/マルチスレッドがどのように発生するか、およびスレッドセーフである必要があるものです。

于 2013-08-03T07:55:59.837 に答える