枚举不仅可以解决线程同步问题, 还可以防止反序列化(没有构造方法), 也就是无法通过反射的方式创建出对象. 

目前为止, 枚举是最好的实现单例的方式, 但是比较别扭, 明明是一个类, 非得定义成一个枚举.


public enum Singleton {

INSTANCE;

public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
new Thread(()->{
System.out.println(Singleton.INSTANCE.hashCode());
}).start();
}
}

}

枚举实现单例singleton_构造方法