比较b / w延迟加载双重检查锁定Vs类级别初始化

时间:2013-10-10 05:55:02

标签: java multithreading singleton

假设我有一个空构造函数用于单吨类,下面两种方法中的哪一种最好从公共getInstance方法返回一个实例?

  1. 类级别初始化     {

    public class ClassName{
    
    private static ClassName instance = new ClassName ();
    }
    

    }

  2. 使用双重检查锁延迟加载

    if (null == instance) {
    
            synchronized (this) {
        if(null == instance) {
            instance = new className();
                }
        }
    }
    
  3. 我认为类级别初始化不会在这里造成任何伤害。但是想从专家那里确认一下。请帮忙

1 个答案:

答案 0 :(得分:1)

您应该拥有私有构造函数和final实例字段。理想情况下,课程也应该是final。最简单的方法是使用枚举

public enum Singleton implements MyInterface {
    INSTANCE;
}