Java 五种单例模式的实现

2018-03-01 11:07:49来源:oschina作者:moneyk1ng人点击

分享

一: 懒汉式

/**
*
* 懒汉式单例模式
*
* 特点:
*1.延迟加载
*2.使用时初始化
*3.线程不安全
*
*/
public class Singleton1 {
private static Singleton1 instance;
private Singleton1(){}
public static Singleton1 getInstance(){
if (instance == null){
instance = new Singleton1();
}
return instance;
}
}

二:饿汗式

/**
*
* 饿汉式单例模式
*
* 特点:
*1.基于单ClassLoder机制,instance在类加载时进行初始化,避免了同步问题
*2.优势在于实现简单,劣势在于不是懒加载模式
*3.在需要实例之前就完成了初始化,在单例较多的情况下,会造成内存占用,加载速度慢问题
*
*
*/
public class Singleton2 {
private static final Singleton2 instance = new Singleton2();
private Singleton2(){}
public static Singleton2 getInstance(){
return instance;
}
}

三:双重校验锁

/**
*
* 双重校验锁单例模式
*
* 特点:
*1.
*
*
*/
public class Singleton3 {
private static Singleton3 instance = null;
private Singleton3(){}
public static Singleton3 getInstance() {
if (instance == null) {
synchronized (Singleton3.class) {
if (instance == null) {
instance = new Singleton3();
}
}
}
return instance;
}
}

四:静态内部类

/**
*
*静态内部类单例模式
*
*
*/
public class Singleton4 {
public static Singleton4 instance = new Singleton4();
private Singleton4(){}
public static Singleton4 newInstance(){
return Singleton4.instance;
}
}

五:枚举单例模式

/**
*
*枚举单例模式
*这种方式有待研究
*
*/
public enumSingleton5 {
instance;
public void whateverMethod(){}
}

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台