设计模式——单件(单例)模式
来源:互联网 发布:查看udp端口是否开放 编辑:程序博客网 时间:2024/05/15 12:08
- 单件模式确保程序中一个类最多只有一个实例。
- 单件模式提供访问该实例的全局点。
- 注意多线程问题,选择合适的实现方式。
- 使用多个类加载器,会导致单件模式失效。
- 第5版java之前,双重检查加锁方式会失效。
- JVM1.2及之前版本,必须建立单件注册表,防止被垃圾回收器回收对象。
方式一:同步方法
public class Singleton{ private static Singleton mInstance; // 构造函数私有化,禁止使用new的方式创建对象。 private Singleton() { } //同步方法,防止多线程同时进入该方法。 public static synchronized Singleton getInstance() { if (mInstance == null) { mInstance = new Singleton(); } return mInstance; }}
该方式简单高效,但是性能会有影响,如果需要频繁获取实例,该方式不适合。如果对性能没有考虑,可使用。
方式二:静态初始化创建
public class Singleton { //静态初始化器创建单件对象,保证线程安全。 private static Singleton mInstance = new Singleton(); // 构造函数私有化,禁止使用new的方式创建对象。 private Singleton() { } //已初始化,直接使用。 public static Singleton getInstance() { return mInstance; }}
如果总是需要创建并使用单件实例,或者在创建和运行时负担不重可以使用该方式。
方式三:双重检查加锁
public class Singleton { // 保证对象在主内存中 private volatile static Singleton mInstance; // 构造函数私有化 private Singleton() { } // 双重检查加锁 public static Singleton getInstance() { if (mInstance == null) { synchronized (Singleton.class) { if (mInstance == null) { mInstance = new Singleton(); } } } return mInstance; }}
仅在第一次创建的时候同步代码块,减少使用同步的次数。
0 0
- 设计模式——单件(单例)模式
- 设计模式——单件模式
- 设计模式——单件模式
- 设计模式——单件模式
- 设计模式——单件模式
- 设计模式—Singleton单件模式
- 设计模式5—单件模式
- 设计模式-单件
- 【设计模式】单件
- 设计模式---单件
- 关于动态单例设计模式或动态单件设计模式—Singleton
- 设计模式------单件模式
- 设计模式--单件模式
- 设计模式 -- 单件模式
- 设计模式:单件模式
- 设计模式-单件模式
- 设计模式-单件模式
- 设计模式 单件模式
- C语言 指针及动态内存分配
- Eclipse maven 导入父模块和子模块
- pthread_create导致的程序崩溃
- ImageView宽高的设置与获取
- VS2010如何创建静态链接库和动态链接库
- 设计模式——单件(单例)模式
- Android 带你从源码的角度解析Scroller的滚动实现原理
- 正则表达式学习
- 关于ListView设置了OnScrollListener之后onScrollStateChanged()和onScroll方法监听不到的问题
- comparator接口与Comparable接口的区别
- limux下进度条代码
- 内存分析工具 MAT 的使用
- Filter在AbsListView中的使用
- cxFreeze安装程序制作