1

我正在研究 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 关系的声明有点困惑,

对 volatile 字段的写入发生在对同一字段的每次后续读取之前。volatile 字段的写入和读取具有与进入和退出监视器类似的内存一致性效果,但不需要互斥锁定

我不清楚上述声明中的粗体声明。

有人可以给我一个想法,它与该声明相关的确切含义是什么?

4

1 回答 1

4

进入/退出监视器会触发像访问volatile变量一样的先发生障碍,但它们也会触发互斥锁定。互斥(或mutex )确保如果多个线程试图越过障碍,一个线程可能会被锁定,直到另一个线程释放互斥锁。

volatile变量具有happens-before功能,但没有任何锁定。

于 2013-10-01T13:58:26.630 回答