单例模式不简单
来源:互联网 发布:c语言中float的用法 编辑:程序博客网 时间:2024/06/10 02:42
单例模式看似简单,但如果写的不够规范,在高并发下可能会产生严重的堵塞。一般单例的实现有两种方式:
代码一:
public class EagerSingleton{private static final EagerSingleton m_instance = new EagerSingleton();/*** 私有的默认构造子*/private EagerSingleton() { }/*** 静态工厂方法*/public static EagerSingleton getInstance(){}}这种方式一般没什么问题,第二种方式:
package com.javapatterns.singleton.demos;public class LazySingleton{private static LazySingleton m_instance = null;/*** 私有的默认构造子,保证外界无法直接实例化*/private LazySingleton() { }/*** 静态工厂方法,返还此类的惟一实例*/synchronized public static LazySingleton getInstance(){if (m_instance == null){m_instance = new LazySingleton();}return m_instance;}}这种写法确实可以保证在多线程下只能创建一个实例,但如果并发过大,很可能会有大量的堵塞被synchronized,所以实现互斥的最好办法是尽量是互斥的代码的粒度达到最小才行,最好的实现应该是这样:
package com.javapatterns.singleton.demos;public class LazySingleton{private static LazySingleton m_instance = null;/*** 私有的默认构造子,保证外界无法直接实例化*/private LazySingleton() { }/*** 静态工厂方法,返还此类的惟一实例*/public static LazySingleton getInstance(){if (m_instance == null){synchronized(LazySingleton.class){if (m_instance == null) { m_instance = new LazySingleton(); }}} return m_instance; }}
- 单例模式不简单
- 不简单的单例模式
- 简约而不简单的单例模式
- 不简单的单例模式Singleton
- 不简单的单例模式Singleton
- 不简单的单例模式Singleton
- 【iOS】Objective-C简约而不简单的单例模式
- 【iOS】Objective-C简约而不简单的单例模式
- 【番外篇】简约而不简单——单例模式
- Objective-C简约而不简单的单例模式
- 单例设计模式学习,看着简单,越往深处探索发现越不简单
- 【读书笔记】HeadFirst设计模式——单件不简单:详述实现Singleton模式需要考虑的方方面面
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- Linux按键驱动程序设计详解---从简单到不简单
- 设计模式------单例模式
- 设计模式------单例模式
- 读取CPU信息
- java filterChain
- Java Tcp 字符发送
- 简单数据绑定和复杂数据绑定
- virt-install 使用说明
- 单例模式不简单
- 用递归法遍历二叉树
- Teach Yourself Programming in Ten Years
- 用c语言生成excel结果
- smarty局部缓存技术3种方法
- Linux下Java3D的安装与配置
- java正则表达式
- limit hashlimit资料整理
- ASP.NET C# 获取当前日期 对日期进行加减操作