Android、Java单例看这里(常用的单例模式对比)
来源:互联网 发布:网络教育毕业证有用吗 编辑:程序博客网 时间:2024/06/16 09:07
懒汉模式
public class SingleInstance{ private static SingleInstance instance; private SingleInstance(){ } public static SingleInstance getInstance(){ if(null==instance){ instance=new SingleInstance(); } return instance; }}
优点
可以延迟加载
缺点
多线程不安全
饿汉模式
public class SingleInstance{ private static SingleInstance instance=new SingleInstance(); private SingleInstance(){} public static SingleInstance getInstance(){ return instance; }}
优点
多线程安全
缺点
加载类时就初始化完成,无法延时加载
双重检查
public class SingleInstance{ private static SingleInstance instance; private SingleInstance(){ } public static SingleInstance getInstance(){ if(null==instance){ synchronized(SingleInstance.class){ if(null==instance){ instance=new SingleInstance(); } } } return instance; }}
优点
多线程安全延迟加载
缺点
同步耗时
静态内部类
public class SingleInstance{ private SingleInstance(){ } public static SingleInstance getInstance(){ return InstanceHelper.instance; } private class InstanceHelper(){ private static SingleInstance instance=new SingleInstance(); }}
优点
多线程安全延迟加载耗时短(与双重检查相比)
用缓存实现
public class SingleInstance{ private static final String KEY="instance"; private static Map<String,SingleInstance> map=new HaspMap<>(); private SingleInstance(){ } public static SingleInstance getInstance(){ SingleInstance instance; if(null==map.get(KEY){ instance=new SingleInstance(); map.put(KEY,instance); }else{ instance=map.get(KEY); } return instance; }}
优点
线程安全
缺点
占用内存较大
0 0
- Android、Java单例看这里(常用的单例模式对比)
- Android中常用的设计模式 --- 单例模式
- java中常用的设计模式-单例模式
- Java中常用的设计模式之单例模式
- 这里实现定界加锁线程安全的单例模式
- Java常用设计模式之单例模式(Singleton)
- JAVA常用设计模式(1)单例模式
- JAVA常用设计模式(1)单例模式
- 常用Java设计模式系列(1)- 单例模式
- java 常用设计模式------单例模式
- 六种常用的设计模式java实现(二)单例模式
- 设计模式:单例模式(Singleton) java实现及实现方式对比
- Java单例模式常用的3种实现方式
- java 单例模式的两种常用写法
- C++单例模式对比
- Java, C++ 单例模式与静态成员初始化对比
- 常用的设计模式----单例模式
- Java单例模式在多线程环境下的性能测试对比实验分析
- 数据结构和算法
- JEECG 社区官方技术支持
- Shell脚本的参数传递
- Ubuntu下面安装eclipse for c++
- 捕获异常信息
- Android、Java单例看这里(常用的单例模式对比)
- HDFS配额设置和测试
- SQLite复杂表的更新方式
- String写出到文件
- 数组
- Pandas学习(一)——数据的导入
- 企业级架构是什么?
- JAVA读写EXCEL
- Windows下安装Mongodb