设计模式之单例模式(Singleton)
1、1.懒汉式,非线程安全
不支持多线程,因为没有加锁,所以从严格意义上它并不是单例模式。
代码如下:

2、2.懒汉式,线程安全
具备很好的lazy loading,能够在多线程中很好的工作,但效率很低。
优点:第一次调用才初始化,避免内存浪费。
缺点:必须加锁synchronized才能保证单例,但加锁会影响效率。
实现代码如下:

3、3.饿汉式
线程安全,这种方式比较常见,但容易产生垃圾对象
优点:没有加锁,执行效率会提高。
缺点:类加载时就初始化,浪费内存。
代码实现如下:

4、4.双检锁/双重校验锁 DCL
jdk1.5版本开始,lazy初始化,线程安全,采用双锁机制,安全且在多线程情况下能保持高性能。
代码如下:

5、5.静态内部类
能达到双检锁方式一样的效果,实现更加简单。对静态域使用延迟初始化,应使用这种方式而不是双检锁方式。
代码如下:

6、6.枚举
jdk1.5起,非lazy初始化,线程安全。这种实现方式还没被广泛采用,但这是实现单例模式的最佳方法。更简洁,自动支持序列化机制,绝对防止多次实例化。
代码如下:

7、7.六种单例实现方式测试及结果

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:158
阅读量:110
阅读量:87
阅读量:75
阅读量:85