版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40718168/article/details/83415792
1.基本理解
a. 可见性:指多个线程之间对共享变量的可见性,一个线程修改状态时别的线程是可见的(意思是一个线程改变了状态,别的线程能够立马及时的看到)。用volatile修饰的变量,当一个线程改变了状态时,其他线程会立马放弃各自缓存中的值,直接从主存中获取最新值刷新自己的缓存。Java中可以使用volatile保证可见性。
b. volatile不能保证原子性但可以保证可见性,volatile能禁止指令重排序。synchronized既能保证原子性又能保证可见性,