单例模式
来源:互联网 发布:广东话seo是什么意思 编辑:程序博客网 时间:2024/06/10 19:50
单例模式:当整个系统只需要一个实例对象时采用单例模式。
一开始加载类时就new MyClass()是饿汉式,当为null时才new MyClass()是懒汉式
非线程安全:
public class MyClass{ private static MyClass instance; private MyClass(){ } public static MyClass getInstance(){ if(instance == null) instance = new MyClass(); return instance; }}
线程安全:
public class MyClass{ private static MyClass instance; private MyClass(){ } public static synchronized MyClass getInstance(){ if(instance == null) instance = new MyClass(); return instance; }}
public class MyClass{ //饿汉式 private static MyClass instance = new MyClass(); //类加载时完成初始化,jvm只分配一次,所有实例共享该静态变量 private MyClass(){ } public static MyClass getInstance(){ return instance; }}
public class MyClass{ private volatile static MyClass instance; //保证可见性 private MyClass(){ } public static MyClass getInstance(){ if(instance == null){ synchronized(MyClass.class){ //对类进行同步,在new MyClass之前再检查一下是否为空 if(instance == null){ instance = new MyClass(); } } } return instance; }}
单元素的枚举类型:
public Enum MyClass{ INSTANCE;//定义一个枚举元素,就相当是定义一个MyClass实例 public void printMsg(){ }}
调用方式:MyClass.INSTANCE.printMsg()
1.5以前的做法是:
public class MyClass{
private static final MyClass instance = new MyClass();
private MyClass(){}public static MyClass getInstance(){ return instance;}
}
对于单例的序列化,除了要implement serializable之外,所有域要声明为transient并提供readResolve方法(from Effective Java)
private Object readResolve(){ return instance;}
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- Linphone-服务器搭建(一)
- How to Get Even with Your Annoying Neighbor by Bumping Them Off Their WiFi Network —Undetected
- 强化学习系列<2>、Q-Learning
- <设计模式>(1)策略模式
- mysql Key_buffer_size参数的设置
- 单例模式
- 线段树
- iOS 制作动态库 报错 image not found
- Linphone-移植(二)
- GEM 帧格式
- [LeetCode.547]Friend Circles
- bootstrap_blue_print_volume ii 读书笔记
- 工作问题总结,bms,第一天
- HttpClient 之get请求