/**
* 最佳单例完美写法之一
*
* Effective Java中写到
*
* 枚举单例模式:解决线程同步问题,又可以防止反序列化
*
* @author zoujidi
* @version 1.0.0
* @date 2020年06月11日 16:55:00
*/
public enum SingletonPrefect2 {
INSTANCE;
public void m() {
System.out.println("m");
}
public static void main(String[] args) {
for (int i=0;i<1000;i++) {
new Thread(() -> System.out.println(SingletonPrefect2.INSTANCE.hashCode())).start();
}
}
}
首先了解单例模式,在我们的使用场景中,需要JVM中某个类有且仅有一个实例,可使用单例模式。
枚举单例模式:既可以解决线程同步问题,又可以防止反序列化(枚举无狗构造方法),没有使用synchonized的耗性能操纵,也可保证lazy_loading,属于最佳单例实现。
为了要实现单例把好好的一个class搞成了枚举,属实有点奇怪,但这的确是最完美的。
本文探讨了枚举单例模式在实现线程同步及防止反序列化方面的优势,介绍了其作为有效Java单例模式的特性,包括无须synchronized关键字即可保证线程安全和lazy_loading,是单例模式的最佳实践。
70

被折叠的 条评论
为什么被折叠?



