Java——更巧妙的2种单例模式
来源:互联网 发布:福腾宝 双立人 知乎 编辑:程序博客网 时间:2024/06/05 19:46
Java——更巧妙的2种单例模式
传统的单例模式
- 饿汉模式
public class Singleton { private static Singleton mInstance = new Singleton(); public static Singleton getInstance() { return mInstance; } private Singleton() { }}
- 懒汉模式
public class Singleton { private static Singleton mInstance; public static Singleton getInstance() { if (mInstance == null) { synchronized (Singleton.class) { if (mInstance == null) { mInstance = new Singleton(); } } } return mInstance; } private Singleton() { }}
更巧妙的2种单例模式
- 类级内部类-实现单例模式
1. 相对于前面的懒汉模式来说,省去了synchronized
2. 利用JVM来保证线程安全性
3. lazy loading
public class Singleton { private static class Inner { private volatile static Singleton ourInstance = new Singleton(); } public static Singleton getInstance() { return Inner.ourInstance; } private Singleton() { }}
- 枚举-实现单例模式
1. 《Effective Java》中被作者认为是实现Singleton的最佳方法
2. 简洁、安全、高效、序列化、防止实例化
3 利用了Enum的特性
public enum Singleton { INSTANCE; private Object object = new Object(); public Object getObject() { return object; }}
测试(返回值为true)
public class Demo { public static void main(String[] args) { Object object1 = Singleton.INSTANCE.getObject(); Object object2 = Singleton.INSTANCE.getObject(); System.out.println(object1 == object2); }}
阅读全文
0 0
- Java——更巧妙的2种单例模式
- cocos2d-x 委托模式的巧妙运用——附源码(一)
- cocos2d-x 委托模式的巧妙运用——附源码(二)
- 更巧妙的表单设计与登陆访问
- java巧妙的冒泡算法
- 更完整的单例模式(java, kotlin)
- java求integer位数的巧妙方法
- java static和final的巧妙应用
- 巧妙解析JAVA中容器的概念
- Java关于短路与&&的巧妙运用
- HDU 4349——Lucas定理的巧妙应用
- 指针的引用——在函数中的巧妙应用
- Android小技巧——LinearLayout巧妙的平均分配空间
- 数据库技巧—SQL Server日期函数的巧妙用法
- POJ3522—最小生成树的巧妙应用
- JDK源码分析Java.lang.Boolean的浅析——单例模式的应用(使我们更省内存)
- JDK源码分析Java.lang.Boolean的浅析——单例模式的应用(使我们更省内存)
- 更方便的数据模式:Hibernate高级映射技术——自定义数据类型StringList
- 图形登陆界面
- 按钮布局演示
- Spark的左外连接解决方案
- HDU5685 (费马小定理,逆元)
- Java -- JDBC
- Java——更巧妙的2种单例模式
- java三角形图案
- linux中逻辑卷管理--lvm
- 关系运算和逻辑运算的应用
- 百钱百鸡又来了
- 什么是CGLIB代理模式
- [Caffe]:convert_data_lmdb.sh error
- 使用Nginx实现反向代理和负载均衡
- jQuery cxSelect 联动下拉菜单 城市联动