单例模式几种实现方式
所属分类 java
浏览量 1249
恶汉 懒汉 模式
懒加载 延迟加载 (lazy loading)
单例模式特点
构造函数私有
仅有一个实例
全局访问点
几种实现方式
静态初始化
public class SingleInstance {
private static final SingleInstance INSTANCE = new SingleInstance();
private SingleInstance(){}
public static SingleInstance getInstance(){
return INSTANCE;
}
}
synchronized + volatile + double check + 延迟加载
public class SingleInstance2 {
private static volatile SingleInstance2 instance = null;
private SingleInstance2(){}
public static SingleInstance2 getInstance(){
if(instance!=null){
return instance;
}
return getInstanceInternal();
}
private static synchronized SingleInstance2 getInstanceInternal(){
if(instance!=null){
return instance;
}
SingleInstance2 instanceTmp = new SingleInstance2();
instance = instanceTmp;
return instance;
}
}
内部静态类 + 延迟加载
public class SingleInstance3 {
private static class Holder{
private static final SingleInstance3 INSTANCE = new SingleInstance3();
}
private SingleInstance3(){}
public static SingleInstance3 getInstance(){
return Holder.INSTANCE;
}
}
枚举实现
public enum SingleInstance4 {
INSTANCE;
public void doSomething(){
}
}
完整代码
https://gitee.com/dyyx/hellocode/tree/master/src/action/single
上一篇
下一篇
java8 ConcurrentHashMap 锁机制
两个线程,一个输出字母,一个输出数字,交替输出1A2B3C4D5E6F
java面试题合集
Mybatis工作原理简介
springboot集成mybatis
spring-boot-starter原理