1.饿汉式
package study.singleModel;
/**
* 饿汉式
* 就是在类加载的时候就创建实例
* @author an
*
*/
public class HungerSingle {
private HungerSingle(){}
private static HungerSingle hs = new HungerSingle();
public static HungerSingle getInstance(){
return hs;
}
public static void main(String[] args) {
HungerSingle hs = HungerSingle.getInstance();
HungerSingle hs1 = HungerSingle.getInstance();
System.out.println(hs==hs1);
}
}
2.懒汉式
package study.singleModel;
/**
* 懒汉式
* 在需要使用的时候再创建实例,多线程的条件下会有线程安全问题
* @author an
*
*/
public class LazySingle {
private LazySingle(){}
private static LazySingle ls = null;
//线程安全的加上synchronized
public static LazySingle getInstance(){
if(ls==null){
synchronized(LazySingle.class){
if(ls==null){
ls = new LazySingle();
}
}
}
return ls;
}
public static void main(S