最近我在一次采访中,他们问我Java Singleton模式。所以我写下了双重检查锁定机制的代码,如下所示:
public class MultiThreadedSingleton {
private static volatile MultiThreadedSingleton instance;
private MultiThreadedSingleton() {
}
public static MultiThreadedSingleton getInstance() {
if (instance == null) {
synchronized (MultiThreadedSingleton.class) {
if (instance == null) {
instance = new MultiThreadedSingleton();
}
}
}
return instance;
}
}
这种模式很好,但是面试官说我不需要锁定。然后他请我编写一个渴望的初始化代码,他说您不需要任何同步块。没错
是否应该根据情况选择Singleton模式?如果初始化任务很繁重,则可以使用多线程延迟初始化,但是如果初始化很轻,则可以进行急切的初始化。有任何猜测吗?
谢谢