在Singleton中如何进行延迟初始化?

Lin*_*nda 3 java lazy-initialization

任何人都可以解释在以下单例模式代码中如何进行延迟初始化?

public class Singleton 
{ 
  private static Singleton INSTANCE = null; 
  private Singleton() {} 
  public static Singleton getInstance() 
  { 
    if (INSTANCE == null) 
       INSTANCE = new Singleton(); 
    return INSTANCE; 
  } 
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 7

第一次getInstance()调用,INSTANCE为null,并使用初始化INSTANCE = new Singleton();.如果从未使用过,则具有不初始化实例的优点.

如果可以由多个线程访问,则应该将此代码改进为线程安全的.

  • `public enum Singleton {INSTANCE; public void method(){...}}`这是如何使线程安全的单例(Thx Joshua Bloch)的最佳方法 (2认同)