剑指offer(1):实现Singleton单例模式
来源:互联网 发布:护腰带腰椎间盘 知乎 编辑:程序博客网 时间:2024/05/16 08:04
题目描述:
设计一个类,只能生成该类的一个实例。
思路:
考察单例模式的运用。运用单例模式是需要考虑多线程环境下的安全同步机制、内存的使用效率。
可行的解法:加锁前后两次判断实例是否存在
初始实例instance为空,静态方法调用时new出新的实例。用2次if判断提高效率,但是代码比较复杂,容易出错。
public class Singleton { private static Singleton instance = null; // 私有构造方法 private Singleton() { } // 静态方法构造实例,双重加锁检查 public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; }}
推荐方式1:静态方法
初始实例instance直接构造,在类加载是只进行一次初始化;利用静态方法返回该实例。避免了加锁同步。
public class Singleton { private static Singleton instance = new Singleton(); // 私有构造方法 private Singleton() { } // 静态方法返回实例 public static Singleton getInstance() { return instance; }}
推荐方式2:静态内部类
只有调用getInstance()方法时,才回构造出静态内部类INstanceHolder的实例,并返回Singletondu实例,实现了按需创建,延时加载。
public class Singleton { private Singleton() { } public static final Singleton getInstance() { return InstanceHolder.INSTANCE; } private static class InstanceHolder { private static final Singleton INSTANCE = new Singleton(); }}
参考
1. 何海涛,剑指offer名企面试官精讲典型编程题(纪念版),电子工业出版社
0 0
- 剑指offer(1):实现Singleton单例模式
- 剑指offer之实现Singleton(单例)模式
- 【剑指offer】题2:实现单件(singleton)模式
- 剑指Offer 面试题2 : 实现Singleton(单例)模式——七种实现方式
- 剑指offer(1) - 实现Singleton模式
- 剑指offer---实现Singleton模式(2)
- 实现Singleton模式( 单例模式)
- 剑指offer - 实现Singleton模式
- Python Singleton(单例模式)实现
- Python Singleton(单例模式)实现
- Java 实现单例(Singleton)模式
- 【JAVA实现】单例模式(singleton)
- 剑指Offer算法题之设计模式的单例模式--面试题2:实现Singleton模式
- 实现Singleton(单例)模式.
- 《剑指offer》002-实现Singleton模式(java实现)
- 剑指Offer系列---(4)实现Singleton模式
- 剑指offer 2. 实现Singleton模式
- 设计模式实现(十七)---单例模式(SingleTon)
- 详解Hive的架构、工作原理及安装步骤
- Eclipse使用技巧 - 7. Eclipse改变Console字体大小
- BestCoder Round #81 (div.2)的题目 HDU5671 HDU 5670
- C语言中不同类型的指针互相转换的注意点
- [bzoj4066]简单题
- 剑指offer(1):实现Singleton单例模式
- DAY8
- JAVA基础知识IO流(文本文件读取方式一)
- Android开发中adb启动失败adb连接异常的解决办法
- Spring JDBCの紹介
- 牛腩新闻发布系统——静态方法使用问题(Static)
- 338. Counting Bits
- Process, program, thread 的区别
- Vector 线程安全与不安全