枚举不仅可以解决线程同步问题, 还可以防止反序列化(没有构造方法), 也就是无法通过反射的方式创建出对象.
目前为止, 枚举是最好的实现单例的方式, 但是比较别扭, 明明是一个类, 非得定义成一个枚举.
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();
}
}
}