设计模式 单例模式
来源:互联网 发布:西安万科金域名城 编辑:程序博客网 时间:2024/06/04 01:19
直接介绍几种线程安全的且我觉得还比较不错的方式:
1、饿汉式,就是类加载就初始化了:
public class Singleton { private static Singleton instance = new Singleton(); public static Singleton getInstance(){ return instance; }}
2、懒汉式,到你需要时,才会去创建:
public class Singleton { private static Singleton instance ; private Singleton(){} public static Singleton getInstance(){ if (instance == null){ synchronized (Singleton.class){ if (instance == null){ instance = new Singleton(); } } } return instance; }}
3、使用Java的枚举,如果对枚举不熟悉,小Google一下:
public enum Singleton { instance;}
4、使用一个持有类,主要是为了不在初始化的时候加载:
public class Singleton { private Singleton(){}; private static final class InstanceHolder{ private static Singleton INSTANCE = new Singleton(); } public static Singleton getInstance(){ return InstanceHolder.INSTANCE; }}
好了,就这么多,以上四种都是比较推荐使用的,除了第一种会类加载的时候初始化,其它三种都不会,且种都保证线程安全,特殊情况(除了多个类加载器,和你非要通过反射等手段生成多个对象)不考虑
阅读全文
0 0
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 设计模式-单例模式
- [设计模式] 单例模式
- 设计模式--单例模式
- 设计模式---单例模式
- 设计模式--单例模式
- 设计模式 -----单例模式
- 设计模式:单例模式
- freeswitch简单安装及连接mysql数据库
- C语言模拟实现memcpy、memmove、memset
- python第三方库下载网址
- poj1915 Knight Moves(bfs)
- js全选
- 设计模式 单例模式
- java正则表达式匹配固定位数的数字
- python 探测web服务质量方法
- Chrome调试技巧
- zookeeper配置中出现Error contacting service. It is probably not running
- Python中进程池的相关概念
- POJ 3176 Cow Bowling
- 服务器运行打包的jar
- vue中引入bootstrap