昨天的面试题,基本答上来了,但还是深深的被鄙视了,小伤感。
但人生么,哪里会有那么多的一帆风顺~
只是我内心又多了许多关于未来的迷茫和不安,悲凉
你要坚强。
No matter What happen!
Enjoy your life!
Try hard!
记于 2014年7月23日
网上搜索了一下,有很多很好的解释,参考如下:
1.单例模式为什么是线程不安全的?
你问到"为什么设置singlton后,会存在线程不安全问题?",那得首先了解什么是线程安全:
对于多线程来讲,如果所使用的公用变量在多线程下没有被保护机制时,变量结果会和理论值不一致,这样就叫作线程不安全,相反公用变量在保护机制下工作,就不会出现未知变化,那这样线程就是安全的.
你的问题:
你在使用单例模式创建对象的时候,如果多个对象同时被创建,又同时被修改或调用就有可能导致了理论值和结果值的不一致,此时线程即是不安全的.
而现在你要做的就是在单例模式下,为防止多线程使用带来的不安全而做同步处理,这种同步处理就是上面说的保护机制.
不理解看这里:
单例中有个部分,就是有个对象作为这个类的成员变量被保存,而不是作为局部变量,所以其他方法发生并发访问这个对象时其实是在操作同一个对象。
举个例子,两个人同时调用一个方法(给我蛋糕),但这个方法返回一个蛋糕的单例对象,两个人同时获得了同一个蛋糕,并坐下,举起刀叉,结果第一个人先吞了蛋糕,就造成了第二个人明明得到了蛋糕,却没能吃到这个结果。
这么解释吃货小伙伴们都应该理解的~
2.如何写一个多线程下线程安全的单利模式呢?
参考:http://blog.csdn.net/xuyuxin8145/article/details/6638524
这个是CSDN上的帖子,应该会一直保存的,所以,此处就不贴了。
请继续努力!