java单例模式 volatile 安全性吗
发布网友
发布时间:2022-04-25 02:33
我来回答
共1个回答
热心网友
时间:2023-10-21 14:19
我不知道你是怎么使用单例。
volatile,这个关键字,保证多线程并发环境,实例变量,被不同的线程(有可能运行在不同的CPU上),修改后,对其他线程是可见的。
因为现代CPU设计有缓存,另外CPU本身有寄存器,volatile,保证了其修饰的变量,一旦改变,一定会写入内存(有些人称为主存)。从反方向考虑,非volatile修饰的变量,有可能放寄存器,也可能扔在cpu的缓存中。其他线程再来读此变量,读到的不是修改后的值。