懒汉式
懒汉式,线程安全 双重锁定解决可能的线程安全问题
/**
* 懒汉式,线程安全 双重锁定解决可能的线程安全问题。
* 因为有可能thread1在if(instance==null)判断为真时进入了if体里但又没开始实例化,
* 而这时thread2也进来了,最终就会有2个实例了。
*
* @author liu.hb
*
*/
public static class SingletonDemoSave {
private static SingletonDemoSave instance;
private SingletonDemoSave() {
super();
}
public static synchronized SingletonDemoSave getInstance() {
synchronized (SingletonDemoSave.class) {
instance = new SingletonDemoSave();
}
return instance;
}
}
饿汉式
/**
* 饿汉式,线程安全 类一加载就实例化,提前占用系统资源
*
* @author liu.hb
*
*/
public static class SingletonDemo1 {
#创建实例
private static SingletonDemo1 instance = new SingletonDemo1();
private SingletonDemo1() {
super();
}
public static SingletonDemo1 getInstance() {
return instance;
}
}