关于单例模式线程安全问题
2012-10-21 08:58
337 查看
原文链接:http://www.iteye.com/problems/14912
整理后如下:
问题:
首先,为什么要同步,不同步出现错误的时机是什么?
还有,单例模式有懒汉式和非懒汉式,如果是懒汉式是否需要加同步锁,非懒汉式呢?
答案:
不同步的话, 对于懒汉式的, 就是在, 这个类的实例还没有创建的时候,
2个线程同时去调用getInstance, 这时, 由于没有同步锁, 有可能会创建出2个实例来。
对于饿汉式, 由于实例是在load class的时候创建的, 所以就没有这个问题。 当然, 就是2个线程采用了不同的class loader.
当然, 无论饿汉还是懒汉, 几率都不高, 但几率低不代表不会出错, 逻辑上也不对, 因此, 编程者还是应该避免
整理后如下:
问题:
首先,为什么要同步,不同步出现错误的时机是什么?
还有,单例模式有懒汉式和非懒汉式,如果是懒汉式是否需要加同步锁,非懒汉式呢?
答案:
不同步的话, 对于懒汉式的, 就是在, 这个类的实例还没有创建的时候,
2个线程同时去调用getInstance, 这时, 由于没有同步锁, 有可能会创建出2个实例来。
对于饿汉式, 由于实例是在load class的时候创建的, 所以就没有这个问题。 当然, 就是2个线程采用了不同的class loader.
当然, 无论饿汉还是懒汉, 几率都不高, 但几率低不代表不会出错, 逻辑上也不对, 因此, 编程者还是应该避免
相关文章推荐
- Android开发设计模式之——单例模式关于线程不安全问题处理
- Java 单例模式线程安全问题
- 关于"栈"对象弱引用的线程安全问题
- 单例模式涉及到的线程安全问题
- 关于java Servlet,Struts,springMVC 的线程安全问题
- 关于Android的View线程安全的问题
- 关于某个变量线程是否安全问题的根本回答
- 关于CoreData和SQLite多线程访问时的线程安全问题
- 关于CoreData和SQLite多线程访问时的线程安全问题
- 关于List Map Set的线程安全的问题
- 关于CoreData和SQLite多线程访问时的线程安全问题
- 关于struts2 的单例和多例及线程安全的问题
- hibernate和mybatis中关于sessionfactory、session的线程安全问题详解
- 学习心得:关于C#中Queue的线程安全问题
- 关于struts2 的单例和多例及线程安全的问题
- 关于CoreData和SQLite多线程访问时的线程安全问题
- 初学设计模式(3)-----单例模式(在研究单例的线程安全问题时,发现一篇很全面的文章,直接转了)
- 关于sheet线程安全问题
- 黑马程序员之线程安全问题与单例模式
- 关于Java语言中的线程安全问题