Java volatile 和缓存一致性

标签 java volatile

如果缓存一致性是在硬件级别实现的,为什么我们需要 volatile?无论如何,任何核心/处理器都应该获得最新值吗?

还是它在处理完全不同的问题?

最佳答案

缓存一致性可以在处理器级别实现,但是,除非 processor memory model保证顺序一致性(大多数现代架构都不是这种情况),只有在您要求时才能获得缓存一致性。

这就是 volatile 的用途:它要求 JVM 生成相关的机器指令,这些指令将要求处理器将其缓存与主内存同步。

关于Java volatile 和缓存一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21129018/

相关文章:

java - 创建一个程序,允许接收多个条目数据,显示列表中的数据

java - 编写一个csv文件并在android中以其他名称作为附件发送

Java 可变变量

java - java.lang.ref.Reference 方法的内存语义

multithreading - C++98:在多线程应用程序中访问共享全局对象需要 volatile

java - 什么时候最好在 Java 中使用 volatile boolean 而不是 AtomicBoolean?

java - 项目无法在装有最新版本的 Netbeans 和 Java SE 开发工具包的新 PC 上启动

java - MergeSort 和 insertionSort 组合算法一起运行比单独运行慢但应该运行得更快

java - 如果我在 Spring Framework 的 @PostConstruct 中初始化对象属性,我应该将它们标记为 volatile 吗?

java - Gradle 禁用所有增量编译和并行构建