单例模式
来源:互联网 发布:手机淘宝改好评怎么改 编辑:程序博客网 时间:2024/06/02 02:40
转自 : http://www.trinea.cn/java/singleton/
主要介绍单例模式的一种写法、注意事项、作用、测试,以Java语言为例,下面代码是目前见过最好的写法:
1、需要注意的点
其中需要注意的点主要有三点
(1) 私有化构造函数
(2) 定义静态的Singleton instance对象和getInstance()方法
(3) getInstance()方法中需要使用同步锁synchronized (Singleton.class)防止多线程同时进入造成instance被多次实例化
可以看到上面在synchronized (Singleton.class)外又添加了一层if,这是为了在instance已经实例化后下次进入不必执行synchronized (Singleton.class)获取对象锁,从而提高性能。
Ps: 也有实现使用的是private static Object obj = new Object();加上synchronized(obj),实际没有必要多创建一个对象。synchronized(X.class) is used to make sure that there is exactly one Thread in the block.
2、单例的作用
单例主要有两个作用
(1) 保持程序运行过程中该类始终只存在一个示例
(2) 对于new性能消耗较大的类,只实例化一次可以提高性能
3、单例模式测试
单例模式可以使用多线程并发进行测试,代码如下:
其中CountDownLatch latch为闭锁,所有线程中都用latch.await();等待锁释放,待所有线程初始化完成使用latch.countDown();释放锁,从而达到线程并发执行Singleton.getInstance()的效果。
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- Linux电源管理(6)_Generic PM之Suspend功能
- 疯狂猜歌实现(10)—— 实现提示、删除按键之事件处理以及金币逻辑
- POJ 3276 Face The Right Way 反转问题 常用技巧
- socket编程[1]
- Java中-----HTML(网页)的设计
- 单例模式
- 详解4字节对齐
- bindAppWidgetIdIfAllowed 老是返回false的原因
- linux下NFS共享与开机自动挂在硬盘
- SqlBulkCopy批量插入数据
- 配置SDK时遇到的一系列问题
- WinPcap实战(一)——发送ARP包
- 选择排序
- SpringMVC + Apache POI 实现WEB中Excel下载功能