单例
来源:互联网 发布:钢铁雄心3 知乎 编辑:程序博客网 时间:2024/04/29 21:43
单例
单例就是该类只能返回一个实例。
单例所具备的特点:
1.私有化的构造函数
2.私有的静态的全局变量
3.公有的静态的方法
单例分为懒汉式、饿汉式和双层锁式
所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间的不同。
“懒汉式”是在你真正用到的时候才去建这个单例对象:
比如:有个单例对象
public class Singleton{ private Singleton(){} private static Singleton singleton = null; //不建立对象 public static synchronized Singleton getInstance(){ if(singleton == null) { //先判断是否为空 singleton = new Singleton (); //懒汉式做法 } return singleton ; }}
“饿汉式”是在不管你用的用不上,一开始就建立这个单例对象:比如:有个单例对象
public class Singleton{ private Singleton(){} private static Singleton singleton = new Singleton(); //建立对象 public static Singleton getInstance(){ return singleton ;//直接返回单例对象 }}
它有以下几个要素:
· 私有的构造方法
· 指向自己实例的私有静态引用
· 以自己实例为返回值的静态的公有的方法
线程安全:
public class Singleton3 { private Singleton3() {} private static Singleton3 single ; public static Singleton3 getInstance() {if(null == single){synchronized(single ){if(null == single){single = new Singleton3();}}}return single; }}
参考:
通过双重判断来保证单列设计模式在多线程中的安全性,
并且它在性能方面提高了很多。
synchronized在方法上加锁 (同步锁)
synchronized在代码块内部加锁 (同步代码块)
synchronized(同步锁)
使用synchronized如何解决线程安全的问题?
1.synchronized在方法上加锁
2.synchronized在代码块内部加锁
1.懒汉 2.饿汉 3.双重判断
阅读全文
1 0
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- 单例
- solr中文全文检索
- TS,PS,PES包格式(好文)
- 外网的情况下,如何远程访问内网的CRM、管家婆、OA等办公系统
- 如何让java XMLStreamReader能发出CDATA事件
- 909422229_Jquery常用选择器大全
- 单例
- bond网络
- 【Hibernate】搭建一个Hibernate环境,开发步骤
- [leetcode]求和类问题
- 使用intellij idea创建Maven Web项目
- st表
- 学习【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑---思维导图笔记
- 分段控件和两个开关控件实例
- @SuppressWarning 使用及支持的参数