剑指offer系列(1)——单例模式实现
来源:互联网 发布:激战2人类男捏脸数据库 编辑:程序博客网 时间:2024/05/18 01:31
在剑指offer系列,我将用java实现这本书里的面试题,这是剑指offer的第一个面试题,实现单例模式。
java实现单例模式主要有两种方式:饿汉式和懒汉式,下面是两种实现:
懒汉式:
public class Singleton { private static Singleton single = null; private Singleton(){ //构造方法设为私有防止其他类调用 } public static synchronized Singleton getInstance(){ //synchronized 限定了这个方法在同一时刻只能被一个线程调用 //static限定了他是一个静态方法,可以拿类名调用 if (single == null) { //只有当single之前没有初始化我们在初始化他 single = new Singleton(); } return single; }}
书上提到这个代码似乎可以再优化,即在当single(单例对象)为空时再加锁,这样就不用给方法加锁了,可以提高运行速度。代码如下:
public class Singleton { private static Singleton single = null; private Singleton(){ //构造方法设为私有防止其他类调用 } public static Singleton getInstance(){ //synchronized 限定了这个方法在同一时刻只能被一个线程调用 //static限定了他是一个静态方法,可以拿类名调用 if (single == null) { synchronized(single){ //给对象加锁 if (single == null) { //只有当single之前没有初始化我们在初始化他 single = new Singleton(); } } } return single; }}
饿汉式:
public class Singleton { private static Singleton single = new Singleton(); private Singleton(){ //构造方法设为私有防止其他类调用 } private static Singleton getInstance(){ //static限定了他是一个静态方法,可以拿类名调用 return single; }}
饿汉式这个类从一开始就一直维护一个实例,运行快,但占用空间较多。而懒汉式则按需创建(即需要时在创建),但用时较长。
阅读全文
0 0
- 剑指offer系列(1)——单例模式实现
- 剑指Offer——单例模式C++实现
- 剑指offer 面试题2—实现单例模式
- 剑指offer 面试题2—实现单例模式
- 剑指offer(1):实现Singleton单例模式
- 剑指offer学习--实现单例模式
- 实现单例模式(offer)
- 剑指Offer 面试题2 : 实现Singleton(单例)模式——七种实现方式
- 剑指offer---单例模式
- 剑指offer算法 java实现 单例模式
- 剑指offer之实现Singleton(单例)模式
- 剑指offer面试题 实现单例模式
- 【剑指offer-Java版】02实现单例模式
- 剑指offer-面试题2 实现单例模式
- 剑指offer 面试题2 实现单例模式
- <剑指offer 面试题2> 单例模式 (Java实现)
- 面试题2:实现单例模式(offer)
- <剑指offer>深度探索(一)实现string 类以及单例模式的具体实现
- LINUX中常用操作命令
- Eclipse Problems During Content Assist正确解决方法
- 顺序表应用 有序顺序表 归并
- 20171014Redis学习总结
- [Django]models中定义的choices 字典在页面中显示值
- 剑指offer系列(1)——单例模式实现
- JavaScript DOM操作表格案例
- Docker下安装Rockmongo,图形化操作mongodb
- 全排列的算法思想
- 内存泄漏弄个明白
- 周总结 17/10/8-17/10/14
- 哈哈日语 五十音图之あ段音
- linux(一)
- svn之迁移代码技巧