首页 > 技术文章 > volatile是怎么实现的?

smallVampire 2019-12-30 10:08 原文

首先得稍微了解一下JMM(java内存模型)的相关基础知识,java中的线程在计算机使用的是内存共享的机制,所以使用volatile关键字可以理解为:

(1)答案一:当被volatile关键字修饰的资源有变化的时候,计算机会把CPU中的缓存资源重新刷新一遍,达到变量可见性一致的效果。

(2)答案二:当前计算机基本为多核多线程,在CPU中有一个缓存一致性的协议,由于这个协议使得CPU缓存资源刷新,最终达到变量可见性一致的效果。

volatile和synchronized的区别:

  (1)synchronized即保证了原子性,也保证了变量可见性;

  (2)volatile只保证了变量可见性;

推荐阅读