synchronized同步锁,解决线程的安全问题,如果不加程序可能出错,例如:当A线程判断 s==null 后,没来得及new 对象就挂起,线程B判断为null,new 对象,A恢复,不在判断就new对象,就出错了。同步保证只用一个对象访问资源。
懒汉式:
class Single{
private Single (){};
private static Single s=null;
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
{
s=new Single();
}
}
}
return s;
}
} |