public class Singleton {private static final Singleton instance = new Singleton();private Singleton(){}public static Singleton getInstance(){return instance;}}
3、使用静态内部类(懒汉式的一种变体)
public class Singleton {private Singleton(){}private static class SingletonHolder {private static final Singleton instance = new Singleton();}public static Singleton getInstance(){return SingletonHolder.instance;}}
4、使用 AtomicReference
import java.util.concurrent.atomic.AtomicReference;public class Singleton {private static final AtomicReference<Singleton> INSTANCE = new AtomicReference<>();private Singleton(){}public static Singleton getInstance(){for(;;){Singleton current = INSTANCE.get();if(current != null){return current;}Singleton newInstance = new Singleton();if(INSTANCE.compareAndSet(null, newInstance)){return newInstance;}}}}