双重检查模式(DCL)问题
本来在上篇帖子里发了,不过没人回答,呵呵 做一个新的问题,问问大家怎么看。
effective java中文版一书中,在165页里说:
迟延初始化(lazy initialization)的双重检查模式(DCL):
private static Foo foo=null;
public static Foo getFoo(){
if(foo == null){
synchronized (Foo.class){
if(foo==null)
foo=new Foo();
}
}
return foo;
}
如果一个线程在不使用同步的情况下读入该引用,并调用被引用的对象上的方法,那么这个方法可能会看到对象被部分初始化的状态,从而导致灾难性的后果。