“发生之前”Java与挥发性字段澄清相关

时间:2013-10-01 13:53:12

标签: java concurrency happens-before

我正在研究Java Concurrency并找到以下资源来引用,

  

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html

     

http://docs.oracle.com/javase/tutorial/essential/concurrency/memconsist.html

我对关于Happens-before relation的陈述感到有点困惑,

  

在每次后续读取之前发生对易失性字段的写入   那个领域。易失性字段的写入和读取具有相似之处   进入和退出监视器时的内存一致性效果但是确实如此   不需要互斥锁定

我不清楚上述陈述中Bold的陈述。

有人可以告诉我它与该陈述的确切含义是什么?

1 个答案:

答案 0 :(得分:4)

进入/退出监视器会触发发生在之前的障碍,例如访问易失性变量,但会触发互斥锁定。 互斥(或互斥锁)可确保如果多个线程尝试越过屏障,则一个线程可能会被锁定,直到另一个线程释放该互斥锁。

易变变量具有发生之前功能但没有任何锁定。