在单例模式中分为懒汉式和饿汉式,所谓懒汉式就是延迟加载,在需要获取单例实例对象的时候再去进行初始化,
饿汉式就是在类加载的时候就已完成实例的初始化。
饿汉式是线程安全的。
在懒汉式中又分为线程安全和非线程安全的。
/**
* Created by
*/
public class Singleton {
//单例模式 饿汉式 线程安全
public static class Singleton1{
private final static Singleton1 instance = new Singleton1();
private Singleton1(){}
public static Singleton1 getInstance(){
return instance;
}
}
//单例模式 懒汉式 非线程安全
public static class Singleton2{
private static Singleton2 instance = null;
private Singleton2(){}
public static Singleton2 getInstance(){
if(instance == null){
instance = new Singleton2();
}
return instance;
}
}
//单例模式 懒汉 线程安全 但是 效率不高
public static class Singleton3{
private static Singleton3 instance = null;
private Singleton3(){}
public static synchronized Singleton3 getInstance(){
if(instance == null){
instance = new Singleton3();
}
return instance;
}
}
//单例模式 懒汉 线程安全 高效
public static class Singleton4{
private static Singleton4 instance = null;
private Singleton4(){}
public static Singleton4 getInstance(){
if(instance == null){
synchronized (Singleton4.class){
if(instance == null){
instance = new Singleton4();
}
}
}
return instance;
}
}
//静态内部类实现单例模式
public static class Singleton5{
private static class Single{
private static final Singleton5 instance = new Singleton5();
}
private Singleton5(){}
public static Singleton5 getInstance(){
return Single.instance;
}
}
}