【发布时间】:2016-03-09 20:06:48
【问题描述】:
它根据 Java 并发原语解释并发,但实际上性能最佳的并发代码使用 sun.misc.Unsafe 原语,其中涉及 CAS 和直接内存栅栏指令。
此外,我个人更喜欢在对并发代码进行推理时使用栅栏而不是发生之前。
那么,JMM 对于现代 Java 仍然有效吗?
或者,换句话说,可以使用 JMM 对程序进行推理,通过 sun.misc.Unsafe 方法同步吗?
【问题讨论】:
-
是的。在绝大多数情况下,您不应该使用
Unsafe,因为它不安全。 -
JMM 旨在始终有效,而不仅仅是在绝大多数时间。
-
我一直在编写 Java 代码……就像从 Java 的第一天开始一样。我从未使用过 sun.misc.Unsafe。是什么让您认为“高质量”并发代码需要它?!我想说,恰恰相反:高质量的代码应该专注于健壮的高级抽象......
-
@Jägermeister 许多 java.util.concurrent 类以及现代框架都使用它。在这里查看详细信息,例如:docs.google.com/document/d/…
-
是的,但这有关系吗?从某种意义上说:我为什么要关心如何实现高级构造?只要我没有遇到这个实现对于我的用例来说“不够好”的麻烦。此外:您的问题基本上是要求“基于意见”的答案。而这样的问题在这里不受欢迎。
标签: java concurrency java-memory-model