单例设计模式及懒汉式线程安全问题
2017-05-15 00:00
337 查看
1.介绍
单例(singleton)设计模式:单态、原子设计模式。单例设计模式作用:
它主要用来保证一个类在程序从启动到最后结束,要保证这个类的对象只有一个。单例就是保证一个类的对象是唯一的。生活中的场景:
比如:A和B2个人去奶茶店买奶茶,老板在给A做奶茶时,B只能等待。只有给A做完奶茶后才能给B做奶茶。结论:
单例设计模式解决就是对象在堆内存中只能开辟一个空间。//饿汉式 class Singleton (){ //私有化构造 private Singleton(){}; //持有自身对象 private static Singleton s = new Singleton(); //对外提供方法 public Singleton getInstance(){ return s; } } //懒汉式 class Singleton2 (){ //私有化构造 private Singleton2(){}; //持有自身对象 private static Singleton2 s2 = null; //对外提供方法 public Singleton2 getInstance(){ if(s2 == null){ s2 = new Singleton2(); } return s2; } }
懒汉式线程安全问题:
// 懒汉式: class Singleton2 { // 私有化构造 private Singleton2() {}; // 持有自身对象 private static Singleton2 s = null; // 对外提供方法,获取对象 public static Singleton2 getInstance() {// t1 // t2 // 我在外面再加一次判断,那么除了第一次创建对象时会进入并且判断同步。 //接下来,再来更多线程,都不会进入if块。就不判断同步了,效率提高了。 if (s == null) { // 加synchronized是为了第一次创建对象时线程安全。但是接下来,就不存在线程安全问题。还要判断同步效率低。 synchronized (Singleton2.class) { if (s == null) { s = new Singleton2(); } } } return s; } }
相关文章推荐
- 解决单例设计模式中懒汉式线程安全问题
- 解决单例设计模式中懒汉式线程安全问题
- 单例设计模式:饿汉式、懒汉式、枚举方式。以及涉及到的线程安全问题和反射机制问题。
- 完美解决单例设计模式中懒汉式线程安全的问题
- java设计模式--解决单例设计模式中懒汉式线程安全问题
- 单例设计模式的线程安全问题(转)
- 解决单例设计模式中的懒汉设计模式存在线程安全问题(并且在一定程度上提高效率)的一种解决方法
- 懒汉式模式的线程安全问题
- 懒汉式单例设计模式同步问题
- 详解单例设计模式的线程安全问题
- Java设计模式-单例模式及线程安全问题
- 懒汉式单例模式的线程安全问题
- 设计模式(一)--深入单例模式(涉及线程安全问题)
- [置顶] Java 多线程学习笔记(十一) 单例设计模式(延迟加载/懒汉模式)DCL解决线程安全问题
- 黑马程序员——java中关于单例设计模式和懒汉式多调用的问题
- 黑马程序员———单例设计模式-懒汉式关于线程安全以及要点
- Java——单例设计模式中懒汉式并发访问的安全问题
- 单例设计模式中懒汉式并发访问的安全问题
- 学习进度表 +解决单利设计模式懒汉式在多线程的安全问题
- 处理单例设计模式中懒汉式的安全问题过程