线程安全的两种单例模式
来源:互联网 发布:js原型链继承 编辑:程序博客网 时间:2024/06/06 10:04
线程安全的两种单例模式
项目中单例模式应该是使用的比较多的一种设计模式,具体有很多种实现单例的方式,但是考虑到在并发的情况下,需要注意线程安全,这里给出两种比较常用的线程安全的单例实现。
1.静态内部类实现
/** * Created by Easzz on 15/06/2017. * 静态内部类实现单例模式 */public class Singleton3 { private Singleton3(){} public static class Holder{ static Singleton3 singleton3=new Singleton3(); } public static Singleton3 getInstance(){ return Holder.singleton3; }}
2.双重检查锁实现
/** * Created by Easzz on 2017/1/15. */public class Singleton { //饿汉式单例模式 private static Singleton uniqueInstance=null; private Singleton(){ } //双重检查锁 public static Singleton getSingleton(){ if (uniqueInstance==null){ //若两个线程同时进入if,第一个线程进入synchronized,创建对象,第二个线程阻塞, //当第一个线程退出时,需要再次判断是否为null,否则第二个线程还是会创建对象。 synchronized (Singleton.class){ if (uniqueInstance==null){ uniqueInstance=new Singleton(); } } } return uniqueInstance; }}
另外,在《Effective java》中写到,
单元素的枚举类型已经成为实现Singleton的最佳方法。
用枚举也可以实现线程安全的单例模式。这里就不列出代码了。
阅读全文
0 0
- 线程安全的两种单例模式
- 线程安全的观察者模式的设计
- 线程安全的单例模式
- 线程安全的单例模式
- 线程安全的单例模式
- 线程安全的单例模式
- Volatile 线程安全的单例模式
- 线程安全的单例模式
- 基于线程安全的单例模式
- 线程安全的单例模式
- 单例模式的线程安全
- Spring中Singleton模式的线程安全
- 线程安全的单例模式
- 线程安全的单例模式
- 线程安全的单例模式
- 线程安全的单例模式
- java实现线程安全的单利模式
- C++ 线程安全的 单实例 模式
- func_get_args()、func_get_arg()与func_num_args()
- Python支持的所有转移序列
- 【SignalR学习系列】4. SignalR广播程序
- 【SignalR学习系列】5. SignalR WPF程序
- adb 使用 wifi 连接设备
- 线程安全的两种单例模式
- 在工作过程中遇到的一些好的文章的url地址
- html5如何利用rem实现自适应布局
- C++中的inline用法(转)
- bigdecimal 保留小数位
- tensorflow笔记:多层LSTM代码分析
- [App] Nginx上虚拟主机的实现过程
- Spring 中配置log4j日志功能
- IDEA MAVEN 容易出现的错误