1.volatile关键字(保证可见性、有序性)
volatile关键字可以有效的保证可见性和有序性。一旦一个共享变量被volatile修饰后,保证了线程在工作内存中对变量进行操作的可见性,一个线程修改了其值,对其他线程来说是立即可见的。而且禁止对程序的顺序进行调整,必须有序执行,但是volatile并不能保证原子性。
2.volatile的底层具体实现方式
可见性实现:利用的是Lock前缀指令+MESI缓存一致性,Lock前缀指令是指线程在工作内存中操作完数据后,CPU立即执行Lock前缀指令,将数据写入主内存,之后有MESI缓存一致性,各个线程嗅觉自己的工作内存数据被修改了,就会在主内存加载最新的值。
有序性实现:加上内存屏障来禁止对程序语句顺序的调整。