Java设计模式--单例模式
来源:互联网 发布:广电网络智慧社区 编辑:程序博客网 时间:2024/06/07 16:47
确保某个类有且只有一个对象实例存在,避免产生多个对象消耗过多的资源。
实现单例模式主要有几个关键点:
1.构造函数不对外开放,一般为private 2.通过一个静态方法或枚举返回一个单例对象3.确保单例类的对象有且只有一个,尤其是在多线程环境下4.确保单例类对象在反序列化时不会重新构建对象
饿汉式:
public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; }}
这是最简单的方法,在类引用的时候就会实例化。不能延迟加载,某种意义上会增加系统的负载。
懒汉式:
public class Singleton { private static Singleton instance = null; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; }}
在饿汉法的基础上增加了延迟加载,只有调用getInstance的方法才会实例化对象,在单线程中没有问题,但在多线程中有可能导致多次实例化。
多线程安全性兼顾效率(双重检查锁 Double Check Lock)DCL 实现实例:
public class Singleton { private static Singleton instance = null; private Singleton() { } public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; }}
DCL方式实现单例模式的优点是既能够在需要时才初始化单例,又能够保证线程的安全性,且单例对象初始化后调用getInstance不进行同步锁。
本方法的亮点都在getInstance上,方法中对instance进行了两次判空,第一次判空主要是为了避免不必要的同步,第二次则是为了在null的情况下创建实例。
阅读全文
0 0
- java 设计模式,单例设计模式
- java设计模式-单例设计模式
- java设计模式-单例设计模式
- Java设计模式 单例设计模式
- Java设计模式------单例设计模式
- java设计模式----->单例设计模式
- java设计模式:单例设计模式
- java设计模式-----单例设计模式
- Java设计模式----单例设计模式
- java设计模式-单例设计模式
- java设计模式:单例设计模式
- java 设计模式-单例设计模式
- Java设计模式--单例设计模式
- java设计模式---单例设计模式
- Java设计模式-单例设计模式
- JAVA设计模式:单例设计模式
- java-单例设计模式
- Java设计|单例模式
- vs 2015 Commmunity 每次启动都提示Key Required解决方案
- 【Java】边框总结
- 如何上手深度学习中的图像处理?有这个代码资源库就够了
- 啊发生的
- Java请求https方法
- Java设计模式--单例模式
- opencv 网站tutorials学习翻译
- 【Jfinal】分页 Ajax点击加载
- C++ 图论-最短路径问题
- iOS转前端之JS进阶技巧及Demo演示
- 卷积神经网络CNN-目标探测
- XZ_JavaScript之JavaScript的基本语法
- Google正面迎战苹果,用ARCore阻击ARKit
- 【NOIP·TG2004】caioj1065·动态规划入门(一维一边推3:合唱队形)