package danLiDuoXianCheng;
//饿汉式 (单例设计模式)
class Single{
private static final Single s=new Single();
private Single(){}
public static Single getInstance(){
return s;
}
}
//懒汉式(延迟加载单例设计模式)
class Single2{
private static Single2 s=null;
private Single2(){}
public static Single2 getInstance(){ //synchronized Single2 getInstance(){//加同步函数可以解决线程安全的问题,
//但是每次在判断if前都需要判段锁,降低了效率
if (s==null) //多加一次判断是为了解决效率问题
synchronized (Single.class) {//加锁是为了解决安全问题
if (s==null)
s=new Single2();
}
return s;
}
}
public class SingleDemo {
}
//饿汉式 (单例设计模式)
class Single{
private static final Single s=new Single();
private Single(){}
public static Single getInstance(){
return s;
}
}
//懒汉式(延迟加载单例设计模式)
class Single2{
private static Single2 s=null;
private Single2(){}
public static Single2 getInstance(){ //synchronized Single2 getInstance(){//加同步函数可以解决线程安全的问题,
//但是每次在判断if前都需要判段锁,降低了效率
if (s==null) //多加一次判断是为了解决效率问题
synchronized (Single.class) {//加锁是为了解决安全问题
if (s==null)
s=new Single2();
}
return s;
}
}
public class SingleDemo {
}