
Java单例深思
文章平均质量分 79
Java中单例模式有多种实现方式,深入思考每种单例模式实现出现的原因,以单例模式实现作为出发点,介绍诸如Java 类加载机制、JVM内存模型、序列化与反序列化、枚举、线程安全等知识点。
TaiSung
Good developers who are familiar with the entire stack know how to make life easier for those around them.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【单例深思】枚举实现单例原理
单例的枚举实现在《Effective Java》中有提到,因为其功能完整、使用简洁、无偿地提供了序列化机制、在面对复杂的序列化或者反射攻击时仍然可以绝对防止多次实例化等优点,单元素的枚举类型被作者认为是实现Singleton的最佳方法。其实现非常简单,如下:public enum Singleton { INSTANCE; private Singl原创 2017-04-26 20:49:58 · 18497 阅读 · 9 评论 -
【单例深思】单例与序列化
在前面的文章中提到,序列化会破坏单例模式,下面用静态内部类的实现方式,说明序列化对单例的影响:public class Singleton implements Serializable{ private static class SingletonHolder { private static final Singleton INSTANCE = ne原创 2017-04-25 17:21:09 · 1296 阅读 · 0 评论 -
【单例深思】静态内部类实现详解
静态内部类实现是我个人比较推荐的,其实现如下:public class Singleton { private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton()原创 2017-04-12 17:28:26 · 1894 阅读 · 2 评论 -
【单例深思】双重检测锁与Java内存模型
双重检测锁 使用粒度较小的锁(缩小锁的范围)解决了 懒汉式改进版 中存在的性能问题,以提高并发量。双重检测锁实现如下:public class Singleton { // 1 private static Singleton singleton; // 2 private S原创 2017-04-12 16:11:06 · 962 阅读 · 0 评论 -
【单例深思】Java 单例模式全解
什么是单例模式?单例模式 是一种对象创建模式,它用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例,并提供一个访问它的全局访问点。单例模式的用途?用于创建只需要一个实例的场景。怎么实现单例模式?单例模式的实现中有几个共同特点:使用 private 声明类构造函数,这样就不能通过new 声明这个原创 2017-04-07 17:05:19 · 762 阅读 · 0 评论 -
【单例深思】饿汉式与类加载
我们知道饿汉式的实现是线程安全的,没有延迟加载(Lazy Loading),下面我们深入研究下为什么。饿汉式的实现如下:public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() {} public st原创 2017-04-08 15:10:55 · 4405 阅读 · 0 评论 -
【单例深思】懒汉式改进版与内置锁
我们知道懒汉式的实现是延迟加载(Lazy Loading),但是不是线程安全的,下面我们深入研究下为什么。懒汉式的实现如下:public class Singleton { private static Singleton singleton; private Singleton(){} public s原创 2017-04-08 16:46:29 · 1394 阅读 · 1 评论