//懒汉式
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class) //如果不同步那么A线程进来
{
if(s==null)
//--->A; 停这了,B线程获得执行权进来了
//--->B;也停这了,C线程获得执行权进来
//--->C,停这了。
//A线程,B线程,C线程唤醒后就会直接执行下面的语句,那么将会创建三个对象的。这就不是单例设计模式了,单例设计模式只允许创建一个对象。
s = new Single();
}
}
return s;
}
}
|