public class Singleton {
private static Singleton singleton;
private Singleton(){
}
public static Singleton getInstance() {
if (null == singleton) {
singleton = new Singleton();
}
return singleton;
}
}
代码一在类创建的同时就并没有建好一个静态的对象供系统使用,并且线程不安全。
public class Singleton {
private static Singleton singleton;
private Singleton(){
}
public static Singleton getsychronizedInstance() {
if (null == singleton) {
synchronized (Singleton.class) {
singleton = new Singleton();
}
}
return singleton;
}
}
代码二在类创建的同时就并没有建好一个静态的对象供系统使用,但是线程安全。
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton(){
}
public static Singleton getsychronizedInstance() {
return singleton;
}
}
代码三在类创建的同时就已经建好一个静态的对象供系统使用,因此也线程安全。
问题:
饿汉模式和懒汉模式是从线程安全角度来区分?还是从初始化类的时候是否实例化静态对象?来区分的。另外在英文版的设计模式中懒汉模式和饿汉模式对应的英文术语是怎么样的?
慕少森
一只斗牛犬
FFIVE
慕慕森
30秒到达战场
相关分类