volatile是干啥用的,有什么含义和特点呢?
- 当一个共享变量被volatile修饰时,它就具备了“可见性”,即这个变量被一个线程修改时,这个改变会立即被其他线程知道。
- 当一个共享变量被volatile修饰时,会禁止“指令重排序”。
volatile关键字会产生什么效果呢?
- 使用volatile关键字会强制将变量的修改的值立即写至主内存;
- 使用volatile关键字,当线程2对变量stop修改时,会强制将所有用到stop变量的线程对应的缓存中stop的缓存行置为无效。
- 由于线程1的stop缓存行无效,所以在运行时线程1会读取主存中stop变量的值。
所以到最后线程1读取到的就是stop最新的值。