volatile 具备可见性,不具备线程安全
可见性:volatile修饰过的值,当一个线程修改过后。其他线程都能知道。即线程修改过后,会立即写回主内存;确保读操作每次都是从主内存读取
不具备线程安全:即多个线程进行自增1时,结果可能会比预期小。
模拟场景:
一个自增步骤:
1. 从主内存读取到工作内存,
2. 进行+1
3. 写回主内存。
A线程和B线程都经过步骤1,即从主内存读取,写回主内存时同时写,这就导致了两次自增写回的值一样,少了一次自增。
volatile的使用场景: