volatile关键字的使用及底层原理

volatile关键字的使用及底层原理

volatile关键字的使用及底层原理
1.没有使用volatile关键字,各个线程会将主内存中的变量放到自己的工作内存,不能实现工作内存变量的可见性问题,各线程不能知道其他线程对变量进行了什么操作.
2.可以通过lock锁的情况对线程进行加锁,当工作内存中的变量发生修改并且write到主内存后才会解锁,然后其他线程才能在主内存中获取到变量.但是这样会导致并行的变成了串行,严重影响工作效率
3.加上volatile修饰以后,就会开启缓存一致性协议,和cpu的嗅探机制,缓存一致性就是当线程内的工作内存对变量进行了修改会立刻同步到主内存,会经过总线,嗅探机制会嗅探到总线上的变量发生变化,则会将自己工作区的原有变量失效,然后重新获取新的变量值