java单例模式创建方法
来源:互联网 发布:iphone照片同步到mac 编辑:程序博客网 时间:2024/06/06 04:47
特点:
1,一个类只能有一个实例
2,自己创建这个实例
1,一个类只能有一个实例
2,自己创建这个实例
3,整个系统都要使用这个实例
/** * 单例模式的五种写法: * 1、懒汉 * 2、恶汉 * 3、静态内部类 * 4、枚举 * 5、双重校验锁 */ /** *五、 双重校验锁,在当前的内存模型中无效 */ class LockSingleton{ private volatile static LockSingleton singleton; private LockSingleton(){} public static LockSingleton getInstance(){ if(singleton==null){ synchronized(LockSingleton.class){ if(singleton==null){ singleton=new LockSingleton(); } } } return singleton; } } /** * 四、枚举,《Effective Java》作者推荐使用的方法,优点:不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象 */ public class EnumSingleton{ private EnumSingleton(){} public static EnumSingleton getInstance(){ return Singleton.INSTANCE.getInstance(); } private static enum Singleton{ INSTANCE; private EnumSingleton singleton; //JVM会保证此方法绝对只调用一次 private Singleton(){ singleton = new EnumSingleton(); } public EnumSingleton getInstance(){ return singleton; } }}/** * 三、静态内部类 优点:加载时不会初始化静态变量INSTANCE,因为没有主动使用,达到Lazy loading */ class InternalSingleton{ private static class SingletonHolder{ private final static InternalSingleton INSTANCE=new InternalSingleton(); } private InternalSingleton(){} public static InternalSingleton getInstance(){ return SingletonHolder.INSTANCE; } } /** * 二、恶汉,缺点:没有达到lazy loading的效果 */ class HungrySingleton{ private static HungrySingleton singleton=new HungrySingleton(); private HungrySingleton(){} public static HungrySingleton getInstance(){ return singleton; } } /** * 一、懒汉,常用的写法 */ class LazySingleton{ private static LazySingleton singleton; private LazySingleton(){ } public static LazySingleton getInstance(){ if(singleton==null){ singleton=new LazySingleton(); } return singleton; } }
0 0
- java单例模式创建方法
- 单例模式的简单创建 方法
- Java 模式1(创建模式) - 单例, 多例,简单工厂模式, 工厂方法模式和抽象工厂模式
- 创建Java的单例模式
- java创建安全的单例模式
- 设计模式--创建模式--单例模式--java
- java 设计模式-创建模式之单例模式
- java设计模式 -------- 创建模式 之 单例模式
- java设计模式 -------- 创建模式 之 单例模式【转】
- java-设计模式-创建模式-单例模式singleton
- Java设计模式之创建型模式--单例模式
- java单例常见创建方法
- Java中创建单例模式的五种方法及线程安全
- Java 创建型模式:单态模式,原型模式,工厂方法,抽象工厂,建造者模式
- java设计模式(创建型)之单例模式
- Java设计模式-创建型-单例模式
- Java设计模式(3)创建型:单例模式
- Java设计模式_(创建型)_单例模式
- 蓝桥杯_Fibonacci数列 java
- jsp之javaBean操作数据库之查,删,改
- webservice公共调用 客户端接口工具类 cfx axis2
- mybatis resultMap 用在什么情况下?
- Java集合之ArrayList,LinkedList,Vector
- java单例模式创建方法
- Java8 十大新特性详解
- Windows Mongodb C++ Client 编译配置
- 蓝桥杯——字串统计
- Hibernate的配置详解
- 最大子列和 动态规划 在线处理
- sicily 2016 Emergent escape
- 寻找下一个结点
- Android中使用Handler造成内存泄露的分析和解决