多线程下线程安全的单列模式
2014-07-23 17:46
267 查看
昨天的面试题,基本答上来了,但还是深深的被鄙视了,小伤感。
但人生么,哪里会有那么多的一帆风顺~
只是我内心又多了许多关于未来的迷茫和不安,悲凉
你要坚强。
No matter What happen!
Enjoy your life!
Try hard!
记于 2014年7月23日
网上搜索了一下,有很多很好的解释,参考如下:
1.单例模式为什么是线程不安全的?
你问到"为什么设置singlton后,会存在线程不安全问题?",那得首先了解什么是线程安全:
对于多线程来讲,如果所使用的公用变量在多线程下没有被保护机制时,变量结果会和理论值不一致,这样就叫作线程不安全,相反公用变量在保护机制下工作,就不会出现未知变化,那这样线程就是安全的.
你的问题:
你在使用单例模式创建对象的时候,如果多个对象同时被创建,又同时被修改或调用就有可能导致了理论值和结果值的不一致,此时线程即是不安全的.
而现在你要做的就是在单例模式下,为防止多线程使用带来的不安全而做同步处理,这种同步处理就是上面说的保护机制.
不理解看这里:
单例中有个部分,就是有个对象作为这个类的成员变量被保存,而不是作为局部变量,所以其他方法发生并发访问这个对象时其实是在操作同一个对象。
举个例子,两个人同时调用一个方法(给我蛋糕),但这个方法返回一个蛋糕的单例对象,两个人同时获得了同一个蛋糕,并坐下,举起刀叉,结果第一个人先吞了蛋糕,就造成了第二个人明明得到了蛋糕,却没能吃到这个结果。
这么解释吃货小伙伴们都应该理解的~
2.如何写一个多线程下线程安全的单利模式呢?
参考:http://blog.csdn.net/xuyuxin8145/article/details/6638524
这个是CSDN上的帖子,应该会一直保存的,所以,此处就不贴了。
请继续努力!
但人生么,哪里会有那么多的一帆风顺~
只是我内心又多了许多关于未来的迷茫和不安,悲凉
你要坚强。
No matter What happen!
Enjoy your life!
Try hard!
记于 2014年7月23日
网上搜索了一下,有很多很好的解释,参考如下:
1.单例模式为什么是线程不安全的?
你问到"为什么设置singlton后,会存在线程不安全问题?",那得首先了解什么是线程安全:
对于多线程来讲,如果所使用的公用变量在多线程下没有被保护机制时,变量结果会和理论值不一致,这样就叫作线程不安全,相反公用变量在保护机制下工作,就不会出现未知变化,那这样线程就是安全的.
你的问题:
你在使用单例模式创建对象的时候,如果多个对象同时被创建,又同时被修改或调用就有可能导致了理论值和结果值的不一致,此时线程即是不安全的.
而现在你要做的就是在单例模式下,为防止多线程使用带来的不安全而做同步处理,这种同步处理就是上面说的保护机制.
不理解看这里:
单例中有个部分,就是有个对象作为这个类的成员变量被保存,而不是作为局部变量,所以其他方法发生并发访问这个对象时其实是在操作同一个对象。
举个例子,两个人同时调用一个方法(给我蛋糕),但这个方法返回一个蛋糕的单例对象,两个人同时获得了同一个蛋糕,并坐下,举起刀叉,结果第一个人先吞了蛋糕,就造成了第二个人明明得到了蛋糕,却没能吃到这个结果。
这么解释吃货小伙伴们都应该理解的~
2.如何写一个多线程下线程安全的单利模式呢?
参考:http://blog.csdn.net/xuyuxin8145/article/details/6638524
这个是CSDN上的帖子,应该会一直保存的,所以,此处就不贴了。
请继续努力!
相关文章推荐
- Lazy方式单列模式,一种线程安全模式的新选择
- c++单列模式与线程安全
- servlet采用单实例多线程模式怎样确保线程安全
- 单列模式及静态变量在多线程下
- 设计模式____单列模式(懒加载,常加载,双检索,线程安全问题)
- 多线程(4)单列模式
- JAVA多线程与单列模式--同步演示
- 多线程__【线程安全】【线程同步】【单例模式的线程安全】【线程死锁】
- 【多线程学习第二弹】单例模式与线程安全
- Java知识(多线程模式和线程安全)
- 【Java多线程】之八:单例模式的线程安全
- 线程安全的单列模式(4种)
- 线程安全的单列模式
- java——多线程——单例模式的static方法和非static方法是否是线程安全的?
- 关于多线程在简单的懒汉模式下线程安全问题的解决
- .net2.0的线程安全下对控件的多线程控制
- 多线程编程的设计模式 临界区模式(一)
- 在多线程中使用静态方法是否有线程安全问题
- 【模式】单件模式及其多线程版本
- 使用多线程提高 Windows 窗体应用程序的性能时,必须注意以线程安全方式调用控件