您的位置:首页 > 其它

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

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上的帖子,应该会一直保存的,所以,此处就不贴了。

请继续努力!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: