懒汉式 and 饿汉式

//懒汉式:存在线程安全问题
public class TestSingleton2 {

public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1==s2);

}
}
//只能创建Singleton的单例模式
class Singleton2{

//1.私有化构造器,使得在类的外部不能够调用此构造器
private Singleton2(){

}
//2.在类的内部创建一个类的实例
private static Singleton2 instance = null;

//3.私有化此对象,通过公共的方法来调用
//4.此公共的方法,只能通过类来调用,因为设置为static的,同类的实例也必须为static声明的
public static Singleton2 getInstance(){
if(instance==null){
instance = new Singleton2();
}
return instance;
}
}

//饿汉式
public class TestSingleton {

public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1==s2);

}
}
//只能创建Singleton的单例模式
class Singleton{

//1.私有化构造器,使得在类的外部不能够调用此构造器
private Singleton(){

}
//2.在类的内部创建一个类的实例
private static Singleton instance = new Singleton();

//3.私有化此对象,通过公共的方法来调用
//4.此公共的方法,只能通过类来调用,因为设置为static的,同类的实例也必须为static声明的
public static Singleton getInstance(){
return instance;
}
}

原文地址:https://www.cnblogs.com/2839888494xw/p/12900899.html