饥饿模式
/**
* Created by zhanghaipeng on 2018/11/9.
* 单例模式 懒汉
*/
public class Singleton1 {
private Singleton1(){}
private static Singleton1 instance = null ;
//线程不安全
// public static Singleton1 getInstance() {
//线程安全
public static synchronized Singleton1 getInstance() {
if( null == instance) {
instance = new Singleton1();
}
return instance;
}
}
懒汉模式
/**
* Created by zhanghaipeng on 2018/11/9.
* 单例模式 饥饿模式
*/
public class Singleton2 {
private Singleton2(){}
//方法一
// private static Singleton2 instance = new Singleton2();
//方法二
private static Singleton2 instance = null;
static{
instance = new Singleton2();
}
//线程不安全
// public static Singleton getInstance() {
//线程安全
public static synchronized Singleton2 getInstance() {
return instance;
}
}
double check
/**
* Created by zhanghaipeng on 2018/11/9.
* 单例模式 double Check
*/
public class Singleton4 {
private Singleton4(){
instance = new Singleton4();
}
private static Singleton4 instance = null;
public static Singleton4 getInstance() {
if(null == instance){
synchronized (Singleton4.class)
{
if(null == instance) {
instance = new Singleton4();
}
}
}
return instance;
}
}
静态内部类
/**
* Created by zhanghaipeng on 2018/11/9.
* 单例模式 静态内部类
*/
public class Singleton3 {
private Singleton3(){}
static class Singleton3Holder{
private static final Singleton3 instance = new Singleton3();
};
public static synchronized Singleton3 getInstance() {
return Singleton3Holder.instance;
}
}