2

スレッド間で共有されるオブジェクトのクラス メンバーに volatile を使用しないシナリオはありますか? 私の理解では、 volatile キーワードは、オブジェクト値がスレッドによってキャッシュされず、常にメモリから読み取られることを保証しますが、揮発性とマークしないからといって、常にスレッドがキャッシュされるわけではありません。だから私の質問は、そのようなクラスを揮発性としてマークしないことで何かを保証できるか、それともコードがランダムな動作に対してオープンになるかということです.

編集:すべてに volatile を使用しても、ロジックの正確性がまったく保証されないことを理解しています。私の質問は理論的な性質のものであり、Java メモリ モデルを理解しようとする私の試みです。

4

3 に答える 3

3

少なくとも不変オブジェクトは、いかなる種類の同期も必要としません。したがって、不変クラスのフィールドにvolatileを使用しても意味がありません。

于 2014-11-19T22:11:16.453 に答える
0

変数を volatile として宣言せず、アクセスする前にミューテックス ロックを一切行わない場合は、予測不能な動作や競合状態/デッドロックに常にさらされます。

于 2014-11-19T22:10:06.033 に答える