3

実際のJava並行性では、次のように述べています。

揮発性フィールドへの書き込みが発生します-同じフィールドの後続のすべての読み取りの前に

つまり、2つのスレッドが同時に読み取りと揮発性フィールドへの書き込みを試みた場合、JVMは書き込み操作が読み取り操作に先行することを保証しますか、それとも競合状態が発生しますか?

4

3 に答える 3

4

競合状態が発生します。結果は、誰が最初にそこに着くかによって異なります。

  • 書き込みが最初の場合、起こる前に、読み取りで新しい値が表示されることが保証されます。
  • 読み取りが最初の場合、最新の以前の書き込みで発生する前に、読み取りがその書き込みの値を確認することが保証されます。
于 2013-01-26T09:27:46.550 に答える
2

volatile フィールドへの書き込みがそのフィールドの読み取りの前に発生した場合、volatile は読み取りが最新の値であることを保証します。

volatile は原子性を保証するものではなく、可視性を保証することに注意してください。

于 2013-01-26T09:41:58.627 に答える