黑马程序员技术交流社区
标题:
多线程中的单例问题
[打印本页]
作者:
安阳
时间:
2013-8-22 00:59
标题:
多线程中的单例问题
<P>class SingleDemo{
private static SingleDemo s = null;
private SingleDemo(){}
private Object obj = new Object();
public static SingleDemo getIntance(){ </P>
<P> if(s == null) {
synchronized(SingleDemo.class) {
if (s == null){
s = new SingleDemo();
}
}
}
return s;
}
}</P>
复制代码
这种单例有什么缺陷?
作者:
白堇翎
时间:
2013-8-22 11:17
private Object obj = new Object();
复制代码
首先这一行代码不知道是做什么用的
其次就算加入了2个if判断 执行效率还是不如饥汉式
作者:
straw
时间:
2013-8-22 20:07
如果要考虑到多线程的话你上面的代码还是不能解决问题的,如果我在synchronized块中添加Thread.sleep(10000);的话照样还是出现多线问题!所以这种方式同样是不安全的.还不如使用恶汉式:
class SingleDemo{
private static SingleDemo s = new SingleDemo();
private SingleDemo(){}
public static SingleDemo getIntance(){
return s;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2