多线程环境下单例模式(java23中设计模式)
2016-08-05 20:04
344 查看
多线程环境下单例模式(java23中设计模式)
一,在类加载时创建实例化单例对象(线程安全,并且不需要同步);
二,双重判断模式(有缺陷,不建议使用)
三,同步方法(线程安全,但是比较耗性能,但是不具有 lazy 特性)
四,使用内部类方法(线程安全,lazy 特性)
一,在类加载时创建实例化单例对象(线程安全,并且不需要同步);
package test; /** * @author Administrator * 多线程变成单例模式——1 */ public class SingletonTest { //类加载是创建一个对象 private static SingletonTest singleton = new SingletonTest(); //私有构造方法,防止被实例化 private SingletonTest(){ } //获取单例对象 public SingletonTest getInstance(){ return singleton; } }
二,双重判断模式(有缺陷,不建议使用)
package test; /** * @author Administrator * 多线程变成单例模式——2 */ public class SingletonTest { // 类加载是创建一个对象 private static SingletonTest singleton = null; // 私有构造方法,防止被实例化 private SingletonTest() { } // 获取单例对象 public static SingletonTest getInstance() { if (singleton == null) { synchronized (SingletonTest.class) { //同步 if (singleton == null) { singleton = new SingletonTest(); } } } return singleton; } }
三,同步方法(线程安全,但是比较耗性能,但是不具有 lazy 特性)
package test; /** * @author Administrator * 多线程变成单例模式——3 */ public class SingletonTest { // 类加载是创建一个对象 private static SingletonTest singleton = null; // 私有构造方法,防止被实例化 private SingletonTest() { } // 获取单例对象 public static synchronized SingletonTest getInstance() { //同步方法块 if(singleton == null){ singleton = new SingletonTest(); } return singleton; } }
四,使用内部类方法(线程安全,lazy 特性)
package test; /** * @author Administrator * 多线程变成单例模式——4 */ public class SingletonTest { // 私有构造方法,防止被实例化 private SingletonTest() { } /* 内部类 */ private static class SingletonFactory { private static SingletonTest single = new SingletonTest(); // 类加载是不会执行 } /* 获取实例对象 */ public static SingletonTest getInstance() { return SingletonTest.SingletonFactory.single; } }
相关文章推荐
- 设计模式——单例模式(Java)——考虑多线程环境下的线程安全问题
- Java设计模式(二):单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率
- Java多线程编程环境中单例模式的实现
- java23中设计模式级解释代码
- java中的23中设计模式
- java设计模式23——解释器模式(Interpreter)
- java 23 设计模式
- java中的23中设计模式
- Java多线程编程环境中单例模式的实现
- 别人的Morgan Stanley面试,注重基础,java core、多线程、设计模式、设计程序。。。
- java的23设计模式详解
- java23设计模式思想
- java 开发中的23中设计模式
- Java单例设计模式,多线程下同步
- Java 多线程编程环境中单例模式的实现
- JAVA 23设计模式一点就通
- Java多线程编程环境中单例模式的实现
- java中的23中设计模式
- JAVA并发设计模式学习笔记(一)—— JAVA多线程编程
- Java 多线程下的单例模式的设计