黑马程序员技术交流社区
标题:
关于单例模式
[打印本页]
作者:
〃FelayMan。
时间:
2014-2-8 17:55
标题:
关于单例模式
看了张老师的视频,关于单例模式这块,有些不是明白。
第一种是:饿汉模式
public class SingleClass {
private static SingleClass single = new SingleClass();
private SingleClass(){}
public static SingleClass getInstance(){
return single;
}
}
第二种是:懒汉模式
public class SingleClass {
private static SingleClass single = null;
private SingleClass(){}
public static SingleClass getInstance(){
if(single==null){
synchronized (single) {
if(single==null)
single = new SingleClass();
}
}
return single;
}
}
然后我想了下,下面这种方式对不对呢?大家帮忙分析下。
public class SingleClass {
private static SingleClass single = null;
static {
single =new SingleClass();
}
private SingleClass(){}
public SingleClass getInstance(){
return single;
}
}
第三种方式能不能叫单例呢?第二种懒汉模式在不进行加锁和判空的情况下,可能在多线程中出现问题,但是第三种直接静态加载,多线程中会出现问题么?
作者:
郭运川
时间:
2014-2-8 18:59
可以算饿汉式,静态代码块的特点是:随着类的加载而执行,只执行一次,并优先于主函数执行
所以加载静态代码块可以保证对象的唯一性
private static SingleClass single = null;
static {
single =new SingleClass();
}
上面的这几句代码和private static SingleClass single = null;实现的效果相同
作者:
无道
时间:
2014-2-8 19:49
public singleclass getinstance()方法加static会更好些。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2