一、饿汉式
线程安全的
public class Singleton {
private static Singleton singleton = new Singleton();
public Singleton(){
}
public static Singleton getInstance(){
return singleton;
}
}
二、懒汉式
1.线程不安全
在涉及到多线程时,会不安全
public class Singleton {
private static Singleton singleton;
public Singleton(){
}
public static Singleton getInstance(){
if(singleton == null){
return new Singleton();
}
return singleton;
}
}
2.线程安全的懒汉式
2.1推荐:
public class Singleton {
private static Singleton singleton;
public Singleton(){
}
public static Singleton getInstance(){
if(singleton == null){
synchronized (Singleton.class){
if(singleton == null){
singleton = new Singleton();
}
}
}
return singleton;
}
}
2.2 另一种方法
public class Singleton {
private static Singleton singleton;
public Singleton(){
}
public static synchronized Singleton getInstance(){
if(singleton == null){
return new Singleton();
}
return singleton;
}
}