在 java4 和 java5 之后使用 volatile 关键字
有什么区别?
与此相关的是,
Read/write operations on non-atomic variables(long/double) are atomic when they are declared as volatile.
对于 java4 也是这样还是它从 java5 开始有效???
最佳答案
是的,有区别。
直到 Java 4 volatile
可以由编译器根据之前的任何读取或写入重新排序,从而导致细微的并发错误,例如使得无法实现 double check
锁定(Singleton 的非常常见的习惯用法)。
这在 Java 5.0 中得到修复,它扩展了 volatile
的语义,它不能再针对任何后续读取或写入重新排序,并引入了新的内存模型。你可以阅读这个Double Checked Locking例如引用
关于java - 在 java4 和 java5 中使用 volatile 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10336006/