博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例模式的代码总结
阅读量:6403 次
发布时间:2019-06-23

本文共 1380 字,大约阅读时间需要 4 分钟。

懒汉式单例类

/** * 懒汉式单例类 * 懒汉式是典型的时间换空间 * @author MJ * */public class LazySingleton {    private static LazySingleton instance = null;    // 私有构造方法    private LazySingleton() {    }    // 静态工厂方法    public static synchronized LazySingleton getInstance() {        if (instance == null) {            instance = new LazySingleton();        }        return instance;    }}

 

饿汉式单例类

/** * 饿汉式单例类 * 饿汉式是典型的空间换时间 * @author MJ * */public class EagerSingleton {    private static EagerSingleton instance = new EagerSingleton();        /**     * 私有构造方法     */    private EagerSingleton(){}        //静态工厂方法    public static EagerSingleton getInstance() {        return instance;    }}

 

双重检查加锁

/** * 双重检查加锁 * 提示:由于volatile关键字可能会屏蔽掉虚拟机中一些必要的代码优化,所以运行效率并不是很高。因此一般建议,没有特别的需要,不要使用。 * 也就是说,虽然可以使用“双重检查加锁”机制来实现线程安全的单例,但并不建议大量采用,可以根据情况来选用。 *  * @author MJ * */public class Singleton {    private volatile static Singleton instance = null;    private Singleton() {    }    // 静态工厂方法    public static Singleton getInstance() {        // 先检查实例是否存在,如果不存在才进入下面的同步快        if (instance == null) {            // 同步块,线程安全的创建实例            synchronized (Singleton.class) {                // 再次检查实例是否存在,如果不存在才真正的创建实例                if (instance == null) {                    instance = new Singleton();                }            }        }        return instance;    }}

 

转载于:https://www.cnblogs.com/MJyc/p/7552674.html

你可能感兴趣的文章
jQuery打造智能提示插件二(可编辑下拉框)
查看>>
[Python] Python 之 function, unbound method 和 bound method
查看>>
希尔排序
查看>>
改变随机数中一些值的概率
查看>>
Spark分析之SparkContext启动过程分析
查看>>
2014电子商务安全技术峰会(含全议题下载)
查看>>
东大OJ-5到100000000之间的回文质数
查看>>
linux C 快速排序法
查看>>
模仿与创新
查看>>
Python用subprocess的Popen来调用系统命令
查看>>
Java NIO与IO的差别和比較
查看>>
.NET源代码的内部排序实现
查看>>
解决Strict Standards: Only variables should be passed by reference
查看>>
解决JBoss只能通过localhost(127.0.0.1)而不能通过IP访问
查看>>
MS SQL处理双引号(DoubleQuote)函数
查看>>
[智能架构系列]什么是Buddy智能开发框架
查看>>
三十一、关于android camera setParameters出错
查看>>
【收藏】QCIF、 CIF、2CIF、DCIF、D1(4CIF)格式介绍
查看>>
hdu 3836 Equivalent Sets (tarjan缩点)
查看>>
一些iOS高效开源类库(转)
查看>>