正在复习,准备申请入学考试了。刚刚看到单例模式,有句话我怎么都理解不过来。请教大神们。
代码如下:
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;
}
}
if (s == null)<font color="#ff0000">//例如这里开了好几个个线程,第一个线程进来后new了一个对象后,就不再为空,外面那个判断就可以把其他线程挡在外面了,这样就可以提高效率啦,但要注意的是,先进来那个线程有可能在new对象前会被抢掉执行权,但锁没释放,其他的也进不来。希望你能明白,祝好运!</font>