您的位置:首页 > 编程语言 > Java开发

懒汉模式和饿汉模式

2017-03-29 11:15 483 查看
今天在看《java编程思想》的访问权限控制一章中,里面讲到private关键字,一个单例模式,原来看过这种写法,但是一直不明白其中的道理,看过之后就明白了。

下面是这个栗子

public class Single {
//在对象加载的时候只进行一次
private static Single single = new Single();

private Single() {}

public static Single getSingle(){
return single;
}

}


构造方法被private关键字修饰,外界访问不到构造方法,只能通过getSingle方法获得

所以只会返回一个实例。

for (int i = 0; i < 5; i++) {
System.out.println(Single.getSingle());
}




可以看到,创建只会返回一个实例。这种加载方式也叫饿汉加载模式。为什么叫饿汉模式呢,因为类在初始化的时候就会实例化自己,而不是在需要的时候才回去加载,下面可以比较一下懒汉模式。

另外补充一点的是,由于类在加载的时候就已经初始化,所以不会有多线程问题。(多线程问题,暂时还未理解透彻,不敢多说)

懒汉模式:

public class LazySingle {

private static LazySingle lazySingle = null;

private LazySingle(){

}

public synchronized static LazySingle  getInstance(){   //线程不安全,加锁
if (lazySingle == null) {
lazySingle = new LazySingle();
}
return lazySingle;
}


for (int i = 0; i < 5; i++) {
System.out.println(LazySingle.getInstance());
}


只会返回一个实例



所以有些书被称为经典还是有一定的道理,人丑就要多读书!!!!哈哈
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java