多线程下线程安全的单列模式

昨天的面试题,基本答上来了,但还是深深的被鄙视了,小伤感。

但人生么,哪里会有那么多的一帆风顺~

只是我内心又多了许多关于未来的迷茫和不安,悲凉

你要坚强。

No matter What happen! 

Enjoy your life!

Try hard!

                     记于 2014年7月23日


网上搜索了一下,有很多很好的解释,参考如下:

1.单例模式为什么是线程不安全的?

你问到"为什么设置singlton后,会存在线程不安全问题?",那得首先了解什么是线程安全:
对于多线程来讲,如果所使用的公用变量在多线程下没有被保护机制时,变量结果会和理论值不一致,这样就叫作线程不安全,相反公用变量在保护机制下工作,就不会出现未知变化,那这样线程就是安全的.
你的问题:
你在使用单例模式创建对象的时候,如果多个对象同时被创建,又同时被修改或调用就有可能导致了理论值和结果值的不一致,此时线程即是不安全的.
而现在你要做的就是在单例模式下,为防止多线程使用带来的不安全而做同步处理,这种同步处理就是上面说的保护机制.


不理解看这里:

单例中有个部分,就是有个对象作为这个类的成员变量被保存,而不是作为局部变量,所以其他方法发生并发访问这个对象时其实是在操作同一个对象。
举个例子,两个人同时调用一个方法(给我蛋糕),但这个方法返回一个蛋糕的单例对象,两个人同时获得了同一个蛋糕,并坐下,举起刀叉,结果第一个人先吞了蛋糕,就造成了第二个人明明得到了蛋糕,却没能吃到这个结果。


这么解释吃货小伙伴们都应该理解的~


2.如何写一个多线程下线程安全的单利模式呢?

参考:http://blog.csdn.net/xuyuxin8145/article/details/6638524

这个是CSDN上的帖子,应该会一直保存的,所以,此处就不贴了。


请继续努力!





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值