单例模式
来源:互联网 发布:淘宝商城开店条件 编辑:程序博客网 时间:2024/06/14 10:22
单例模式
立即加载(饿汉模式)
public class MyObject{ private static MyObject myObject = new MyObject(); private MyObject(){} public static MyObject getInstance(){ return myObject; }}
延迟加载(懒汉模式)(线程不安全)
public class MyObject{ private static MyObject myObject = null; private MyObject(){} public static MyObject getInstance(){ if(myObject == null){ myObject = new MyObject(); } return myObject; }}
DCL双检查锁机制(大多数多线程的解决方案)
public class MyObject{ private static MyObject myObject = null; private MyObject(){} public static MyObject getInstance(){ if(myObject == null){ synchronized (this.getClass()){ if(myObject == null){ myObject = new MyObject(); } } } return myObject; }}
静态内置类实现单例
public class MyObject{ private static class MyObjectHander{ private static MyObject myObject = new MyObject(); } private MyObject(){} public static MyObject getInstance(){ return MyObjectHander.myObject; }}
通过静态内部类的静态成员在使用时才会被初始化,而且只会被初始化一次来实现。
序列化与反序列化的单例实现(静态内置类)
参考连接 主要的原因时在反序列化时,ObjectInputeStream使用反射调用了类的默认构造函数,当实现readResolve后可自定义反序列化方法
使用static代码块和枚举类型enmu实现
其实都是利用了类型都只初始化一次的特性
阅读全文
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- Spring IOC和DI
- svn: line 19: Option expected
- linux创建空洞文件
- 设计模式----工厂模式
- IDEA创建maven的web工程很慢
- 单例模式
- sublime使用技巧
- CAM
- 分布式服务框架 Zookeeper
- file创建文件失败的问题
- 原型模式和基于原型继承的JavaScript对象系统
- ZStack消息流分析
- 电商笔记-03
- 设计模式-----迭代器模式和组合模式