我们经常这样写单例模式:
public class LzySingleInstance {
public static volatile LzySingleInstance lzySingleInstance;
private LzySingleInstance(){
}
public static LzySingleInstance getLzySingleInstance(){
if (lzySingleInstance == null){
synchronized (LzySingleInstance.class){
if (lzySingleInstance == null){
lzySingleInstance = new LzySingleInstance();
}
}
}
return lzySingleInstance;
}
}
那么,有没有思考过一个问题:volatile到底是什么作用?
volatile的特性:
1.线程可见性;
一个线程操作了对象,其他线程立马可见。
2.禁止重排序;
保证对象被实例化完成!