是否需要双重检查锁定?

时间:2019-06-24 20:13:16

标签: java multithreading singleton synchronized

最近我在一次采访中,他们问我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模式?如果初始化任务很繁重,则可以使用多线程延迟初始化,但是如果初始化很轻,则可以进行急切的初始化。有任何猜测吗?

谢谢

0 个答案:

没有答案