【发布时间】:2015-12-24 09:34:16
【问题描述】:
当我在http://www.javaworld.com/article/2074979/java-concurrency/double-checked-locking--clever--but-broken.html 上浏览一篇关于 DOUBLE-CHECKED LOCKING 的文章时,我遇到了一条评论说“应该注意的是,实际上 DCL 可能适用于某些 JVM 的某些版本——因为实际上很少有 JVM正确实施 JMM。” 因此,我从中推断 JMM 指定同步块是原子的,即使对于其他线程中未同步的块也是如此。 我对吗? (我尝试阅读oracle网站上的JMM,但是太抽象了,我放弃了。)
【问题讨论】:
-
同步块绝对不是原子的,我不明白你会如何从该评论中推断出这一点。
-
不,你错了。如果您对此有疑问,请阅读 JMM 规范。任何人都可以提出一些毫无根据的猜测,但如果您没有费心阅读您正在谈论的内容,您就不能指望人们深入反驳它
标签: java multithreading java-memory-model double-checked-locking synchronized-block