在 Java 中,所有线程都使用相同的堆。如果一个线程正在将操作缓存到堆,它究竟什么时候会刷新到堆?
我已经阅读了很多帖子,但无法找到答案。
谢谢。
在 Java 中,所有线程都使用相同的堆。如果一个线程正在将操作缓存到堆,它究竟什么时候会刷新到堆?
我已经阅读了很多帖子,但无法找到答案。
谢谢。
volatile
告诉Java变量可能在多个线程中改变,所以不要缓存变量。缓存是处理器级别的结构,因此处理器可以随时刷新缓存。
举另一个例子:有像股票网站这样的网站,它们希望向用户显示最新数据,而不是一些陈旧的数据。正确的?
所以他们所做的是他们禁用网页缓存,这样页面就不会被缓存在任何地方,并且所有页面都将获得最新的数据更新。
类似的情况是volatile
,内核或处理器有自己的缓存,他们缓存结果,认为当前处理器上运行的线程不会改变变量的值,那么为什么要一次又一次地从内存中读取。所以它缓存它并返回缓存的值(这是为了硬件级别的性能)。
因此,如果像网站示例一样,您想停止使用陈旧值的其他处理器,您需要停止缓存,volatile
这是在 Java 中执行此操作的方法。