单例模式

原创 2017年08月14日 19:36:11

单例模式其实是一个很简单的设计模式,其作用就是为了让某一个类的全局实例只有一个。
我认为这个模式在oop上思想的增加是很少的。但这个模式却是对多线程安全认知的一个很好的例子。

这是我代码的demo单例github demo

其实我代码中的注释也写的很明白了。
能保证线程安全的单例大概有三种写法。

第一种: 双重检查就是SingletonDobuleCheck这个类的写法,使用了java内置的加锁机制,synchronized关键字实现,其缺点就是低于java5的版本不能兼容,不过这个也可以忽视了。

第二种 第二种就是懒加载,依赖jvm的机制保证创建时的线程安全,但是会在其类加载过程时就会对其进行实例化,如果这个类持有很多资源,会造成资源的浪费。

第三种 第三种就是使用静态内部类,其保证线程安全的原理跟第二种一样,但其使用了静态内部类就避免了第二种的缺点,这也是我所推荐的实现方式,代码还简短。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Extjs4 在Grid列中加入progress bar

在Extjs4的Grid中改变单元格背景颜色,最近项目中也有用到,所以还是做好实例,还是用之前的例子《Extjs4:给Grid的Header加上提示》,变化的百分比如果是正数用绿色背景色,如果是负数用...

c++11 chrono全面解析(最高可达纳秒级别的精度)

chrono是c++ 11中的时间库,提供计时,时间等功能。 学习chrono,关键是理解里面时间段(Durations)、时间点(Time points)的概念。 1.基础: 时间节拍:

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

ExtJS之Progressbar进度条的手动模式和自动模式。

主要介绍EXTJS中常用的进度条的两种基本实现。         手动模式和自动模式。         A:手动模式:             &...

EXT_进度条组件_Ext.ProgressBar

进度条组件常用配置:/*常用配置项表:applyTo String 页面上已存在元素或元素id,组建追加到该元素后renderTo String ...

ext 实现进度条效果

String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServ...

Java注解的实现与使用

Java注解是java5版本发布的,其作用就是节省配置文件,增强代码可读性。在如今各种框架及开发中非常常见,特此说明一下。

(五)ExtJs进度条的几种实现方式

1.今天我们学习ExtJs进度条的实现,我们共介绍8种方式进行实现。 2.我们首先看一下代码和实现的效果,然后进行分析。 extShowProgress.html ...

Flask和Celery的使用

显示更新状态和结果The above example is overly simple, the background job is started and then the application ...

url乱码

JAVA 中URL链接中文参数乱码的处理方法2007年12月24日 星期一 09:10方法一:http://xxx.do?ptname=我是中国人String strPtname = request....
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)