volatile关键字保证线程读取写入主内存,也就是变量线程间是可见的。但是不保证对变量的原子操作线程安全。比如两个线程同时对volatile变量读取、修改、写入主内存,这样是线程不安全的。
但是,有中情况,比如我要修改变量,让正在运行的其他线程拿到这个变量修改后的值,那么用volatile是合适的。
还有个作用是禁止cpu对指令进行重排序。
volatile关键字保证线程读取写入主内存,也就是变量线程间是可见的。但是不保证对变量的原子操作线程安全。比如两个线程同时对volatile变量读取、修改、写入主内存,这样是线程不安全的。
但是,有中情况,比如我要修改变量,让正在运行的其他线程拿到这个变量修改后的值,那么用volatile是合适的。
还有个作用是禁止cpu对指令进行重排序。