单例模式几种实现
来源:互联网 发布:网络传播推广方案 编辑:程序博客网 时间:2024/06/05 11:54
1.单线程模式下,推荐懒加载
public class Singleton1 { private static Singleton1 singleton = null; private Singleton1() { } public static Singleton1 getInstance() { if (singleton == null) { singleton = new Singleton1(); } return singleton; }}
2.上述1演示,线程不安全,最容易想到的变为线程安全的方式就是加关键字synchronized
public class Singleton1_1 { private static Singleton1_1 singleton = null; private Singleton1_1() { } public synchronized static Singleton1_1 getInstance() { if (singleton == null) { singleton = new Singleton1_1(); } return singleton; }}
3.“双重检查锁”(Double Check Lock,简称DCL)
public class Singleton1_2 { private static Singleton1_2 singleton = null; private Singleton1_2() { } public static Singleton1_2 getInstance() { if (singleton == null) { synchronized (Singleton1_2.class) { if (singleton == null) { singleton = new Singleton1_2(); } } } return singleton; }}
4.由于指令重排,上述3,仍然可能不安全,volatile关键字可以解决此问题
public class Singleton1_3 { private static volatile Singleton1_3 singleton = null; private Singleton1_3() { } public static Singleton1_3 getInstance() { if (singleton == null) { synchronized (Singleton1_3.class) { if (singleton == null) { singleton = new Singleton1_3(); } } } return singleton; }}
5.饿汉模式
public class Singleton2 { private static final Singleton2 singleton = new Singleton2(); private Singleton2() { } public static Singleton2 getInstance() { return singleton; }}
阅读全文
0 0
- 单例模式几种实现方法
- 单例模式的几种实现
- 单例模式几种实现方式
- 单例模式的几种实现
- 单例模式的几种实现
- 单例模式的几种实现
- 单例模式几种实现方法
- 单例模式几种实现
- 单例模式几种实现
- 单例模式的几种实现
- IOS实现单例模式的几种实现方法
- IOS实现单例模式的几种实现方法
- java单例模式的几种实现
- JAVA单例模式的几种实现方法
- 单例模式singleton的几种实现方式
- JAVA单例模式的几种实现方法
- JAVA单例模式的几种实现方法
- 单例模式的几种实现及其比较
- IDEA常用快捷键
- 奥维奥(AVA)免费为您提供麦肯锡《2016中国汽车消费者报告》
- javascript for/in 循环遍历对象属性
- Ubuntu搭建NFS服务
- 【中国农业银行风险管理部总经理 田继敏】筑牢IT风险第二道防线 保障银行信息科技安全
- 单例模式几种实现
- OpenCV—基本矩阵操作与示例
- List<T>集合转换为EasyUI TreeGrid所需要的Json格式通用工具
- .Net各种集合类型的区别
- 机器学习经典算法详解及Python实现---Logistic回归(LR)分类器
- BZOJ1999 && noip2007树网的核
- Convolutional Neural Networks: Step by Step
- 什么是ZPU?
- 使用github的oauth来实现用户登录