黑马程序员技术交流社区
标题:
单例设计模式
[打印本页]
作者:
郭军亮
时间:
2013-5-29 10:42
标题:
单例设计模式
我对单例设计模式的懒汉式有一个疑问
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;
}
}
这样的话,岂不是每次调用getInstance()这个方法,就会执行一次s = new Single();也就是创建一次对象吗?这就不止一个对象了吧?
作者:
神之梦
时间:
2013-5-29 10:58
严重怀疑哥们是真的不懂?
作者:
刘勇强
时间:
2013-5-29 11:07
单例是指一个类在内存中只有一个对象,getInstance()是静态的,每次生成对象都需要用类名来调用这个静态方法. 而构造函数被私有,你不可能再生成对象的
作者:
李阳阳
时间:
2013-5-29 14:38
你写的这个代码,安全问题已经解决了,好比第1个线程进来了,判断了为空之后就拿到锁
进去了,然后在判断是否为空,为空的话,就创建一个对象,这时候如果第二个线程进来的话,
就再判断是否为空,因为前面已经创建个对象并把对象提供出去了,那么第二个线程再判断的话
s就不为空了,所以说后面的无论谁再调用getgetInstance()方法,由于第一个判断都不满足
条件,那也就不会进去再创建对象了
作者:
黑马-许鹏
时间:
2013-5-29 15:51
李阳阳 发表于 2013-5-29 14:38
你写的这个代码,安全问题已经解决了,好比第1个线程进来了,判断了为空之后就拿到锁
进去了,然后在判断是 ...
楼上正解,支持
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2