黑马程序员技术交流社区
标题:
求解,关于单例模式当中懒汉式的安全问题
[打印本页]
作者:
移动小坦克
时间:
2013-2-25 15:19
标题:
求解,关于单例模式当中懒汉式的安全问题
学习当中看到多线程时懒汉式存在安全隐患,所以要用synchronized同步,想问一下,synchronized内部是如何的,看源代码肯定看不懂,有没有人能把原理简单说一下
作者:
黄玉昆
时间:
2013-2-25 15:53
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if (s == null)
{
synchronized(Single.class)
{
if (s == null)
s = new Single();
}
}
return s;
}
}
复制代码
在这个例子中,
比如说,
当
A调用时,当读到第二个if(s1==null) 时,可能就停在这了,然后cpu再调用B,B读到第一个
if(s1==null)这停下了,因为加上synchronized后,A进去就相当于将其他的调用锁在外面的语句上了,要先执行完A,那么A执行完后,就已经创建了一个对象;当B再读到第二个if(s1==null)的时候不符合就直接结束了。如果再有其他C或D等调用的时候,就直接不符合第一个(s1==null)的条件,所以直接返回s。
作者:
付玉光
时间:
2013-2-26 22:11
hao,基础知识非常牢固,1LV5.
作者:
杨玉辉
时间:
2013-3-2 21:32
{:soso_e122:}看看视频 搜索资料吧 多理解 想办法用自己的话 表述出来 就是你的啦
作者:
tianyun
时间:
2013-3-13 21:47
同步只在访问对象时对对象加锁,当有对象访问该同步对象时,其他对象就不能继续访问。直到该对象访问完,释放后才能访问。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2