黑马程序员技术交流社区
标题:
为了解决懒汉式单例模式中的线程安全问题,下面这个两...
[打印本页]
作者:
zhang63
时间:
2014-6-3 14:19
标题:
为了解决懒汉式单例模式中的线程安全问题,下面这个两...
本帖最后由 zhang63 于 2014-6-3 14:25 编辑
//方法1
class Singleton1
{
private static Singleton1 singleton = null;
private Singleton1() {}
public static Singleton1 getInstance()
{
if (singleton == null)
{
synchronized (Singleton1.class)
{
if (singleton == null)
singleton = new Singleton1();
}
}
return singleton;
}
}
//方法2
class Singleton
{
private static Singleton singleton = null;
private Singleton() {}
public static synchronized Singleton getInstance()
{
if(singleton==null)
{
singleton = new Singleton();
}
return singleton;
}
}
复制代码
作者:
yuZhe_toString
时间:
2014-6-3 14:27
第一个明显比第二个效率高。
作者:
wyqs92
时间:
2014-6-3 14:44
第一个用到了双重判断,减少了判断次数!!第一个比第二个性能更高!!!
作者:
blackstones1
时间:
2014-6-3 14:59
第二个在判断完singleton为空之后就会初始化,之后锁都不要判断了
第一个的话 singleton就算初始化了 程序每次运行还是要判断锁 所以第二个效率较高
作者:
Lex
时间:
2014-6-3 20:13
老毕视频中有讲解道的,第一个更安全
作者:
sheng6699
时间:
2014-6-3 20:30
明显第二个方法效率高,
作者:
淡淡柠檬茶
时间:
2014-6-3 20:59
恩,这个例子当时在视频中毕老师特别强调过,面试的时候会经常出现,至于实际开发我就不清楚了,以为我还没有学那么多,慢慢在看吧,不过我确定,后者应用范围更广
作者:
观决
时间:
2014-6-3 21:25
昨天看到一个DCl的失效问题 有时间你可以百度一下
第一种有可能会出问题的 jdk1.5的 volatile关键字修饰 修复这个问题
private volatile static Singleton1 singleton = null;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2