黑马程序员技术交流社区
标题:
毕老师的单例代码总结及分析总结(这段真的好精彩~)
[打印本页]
作者:
zcbcba123
时间:
2015-12-16 21:48
标题:
毕老师的单例代码总结及分析总结(这段真的好精彩~)
/*单例模式*/
//饿汉式
class Single{
private static final Single s=new Single();
private Single(){}
public static Single getInstance(){
return s;
}
}
分析:之所以s加了final,这样更严谨,由于初始化成员变量时就new了实例化对象,所以称为饿汉式。
//懒汉式
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();
}
}
}
}
}
分析:由于一开始s为空,所以称为懒汉式。第一次s为空进入if,后进入同步代码块。如果发现此时再进来一个线程,那么由于有Single.class作为锁,那么此时第一次进来的线程不结束,第二次的是进不来同步代码块的。
那么第一次的结束同步代码块后释放执行权,第二次进来卡到同步的那个线程则进入里面。结果此时s已经有了实例化对象,所以s!=null,所以不会往里走实例化了。
然后如果此时又来了新的线程,那么外面的s==null就可以阻止了,因为s已经被实例化了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2