单例设计模式中的懒汉式:
//饿汉式:
class Single
{
private static final Single s = new Single();
private Single(){}
public static Single getInstance()
{
if(s == null)
s = new Single();
return s;
}
}
所以在getInstance方法上加入了同步。
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s == null)
s = new Single();
}
}
return s;
}
}
虽然解决了安全问题。但是效率降低了,可以通过双重判断的形式进行一下优化。
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s == null)
s = new Single();
}
}
return s;
}
}
//饿汉模式:
class Single
{
private static final Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}