我是靠谱客的博主 优秀心情,这篇文章主要介绍java 设计模式-单例模式-懒加载,现在分享给大家,希望可以做个参考。

首先推荐种最好的单例模式实现方式(没有之一)

复制代码
1
2
3
4
5
6
7
8
9
10
public class Manager { private Manager() { } public static Manager getInstance() { return ManagerHolder.instance; } private static class ManagerHolder { private static final Manager instance = new Manager(); } }

然后解释下为什么要用这种方式:

* 内部类只在需要的时候才会被类加载器加载,实现了懒加载,即在需要的时候才实例化出一个Manager,而且是唯一的一个

* 同时由于instance是static final类型,保证了内存中只有这样一个实例存在,而且只能被赋值一次,从而保证了线程安全性

(即使在高并发的情况下多个线程同时访问getInstance()方法 也能够保证实例的唯一性)

其他没有采用内部类的实现方式 以下是目前见过最好的:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static class SingletonOptimizeLazy {     static SingletonOptimizeLazy instance = null;     public static SingletonOptimizeLazy getInstance() {       if (instance == null) {         createInstance();       }       return instance;     }     private synchronized static SingletonOptimizeLazy createInstance() {       if (instance == null) {         instance = new SingletonOptimizeLazy();       }       return instance;     } }

以上这种解决方式 主要思想是将实例化的过程抽象出来 放在一个sychronized方法中执行 这样也能够实现懒加载与并发安全

不过仍然推荐使用内部类的解决方案

最后

以上就是优秀心情最近收集整理的关于java 设计模式-单例模式-懒加载的全部内容,更多相关java内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部