单例(singleton)模式
来源:互联网 发布:齐柏林飞船知乎 编辑:程序博客网 时间:2024/06/05 17:59
取材均来自head first dp。
单例模式的懒汉式:
public class LazySingleton {private static LazySingleton singleton = null;private LazySingleton() {super();}public LazySingleton getInstance(){if(singleton == null){singleton = new LazySingleton();}return singleton;}}单例模式的勤汉式:
public class DiligentSingleton {private static DiligentSingleton instance = new DiligentSingleton();private DiligentSingleton(){}private static DiligentSingleton getInstance(){return instance;}}
差异:
1.当单例管理的资源很重,而这次执行过程中有可能没有用到它,就会造成资源浪费,所以优先考虑懒汉式,当使用时再进行初始化操作。
2.懒汉式处在并发环境中时,很可能出现意外,导致创建多个实例,从而造成错误,勤汉式依赖jvm加载这个类时马上初始化对象,可以规避并发问题。
多线程懒汉式:
public class MultithreadingSingleton {//volatile防止编译器对初始化顺序进行重排private volatile static MultithreadingSingleton instance = null;private MultithreadingSingleton(){};public static MultithreadingSingleton getInstance(){if(instance == null){synchronized(MultithreadingSingleton.class){if(instance == null){instance = new MultithreadingSingleton();}}}return instance;}}
基于类初始化的解决方案
public class InstanceFactory { private static class InstanceHolder { public static Instance instance = new Instance(); } public static Instance getInstance() { return InstanceHolder.instance ; //这里将导致InstanceHolder类被初始化 }}
- 单例模式(singleton)
- 单例(Singleton)模式
- 单例模式(Singleton)
- 单例模式(Singleton)
- Singleton(单例)模式
- 单例模式(Singleton)
- 单例模式(Singleton)
- 单例模式(Singleton)
- 单例模式(singleton)
- 单例模式(Singleton)
- 单例模式(Singleton)
- 单例模式(Singleton)
- 单例模式(Singleton)
- 单例(Singleton)模式
- 单例(Singleton)模式
- 单例(Singleton)模式
- 单例模式(Singleton)
- Singleton(单例模式)
- excel计算两列差的公式和方法
- C#的委托代替C++的函数指针
- linux C线程杂记
- excel表格中如何计算两个日期之间的天数?
- 升级cs项目:从vs2003项目vs2005,错误提示“项目所需的应用程序未安装,确保已安装项目类型(.csproj)的应用程序”...
- 单例(singleton)模式
- 下拉刷新以及上拉加载更多
- 易飞bom循环或超过20阶
- Android常用语句
- iOS下拉刷新的详细介绍
- SQL server 2008调试功能设置
- 内存中的堆栈
- 网络编程—02
- 卡方检验基础