单例模式
来源:互联网 发布:2017神优化单机游戏 编辑:程序博客网 时间:2024/06/01 09:30
创建多个线程来测试一下
测试结果为:
cn.spring.dxcDanli.Singleton@132965a8
cn.spring.dxcDanli.Singleton@132965a8
cn.spring.dxcDanli.Singleton@132965a8
显示为三个相同的内存地址,说明这个模式符合单例
第二种为懒汉模式
用多线程去测试一下是否每个对象的HashCode的值是保持一致的
测试结果如下:
126720696
137014984
1638443495
测试的结果发现 这个已经不符合单例模式,他们并不是同一个对象了,而是几个不同的对象,所以这种懒汉模式在单线程中是符合单例模式的,不过在多线程环境中是不符合单例模式
synchrinized关键字,来看看效果
测试结果如下1638443495
1638443495
1638443495
大家发现这样的确可以解决多线程带来的不同对象所导致的问题,但是这个方法并不好,这种方法效率非常低下,一定要等到上一个线程释放锁以后才能获取对象
同步方法是对整个方法持有锁,这个对于效率来说实在太慢,大家还会想到用同步块,那么我们在试一试
其实这个效果和上个效果差不多,效率都是比较慢的,和同步方法synchronized一样是同步运行的
这里最好的方式就是DCL双检查锁机制,也就是同步代码块
阅读全文
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- uniity版本更换iOS需要做的几项重复操作(二)
- Python学习——石头剪刀布小游戏
- mybatis处理and、or关系的方法
- Python 函数
- POJ 3258 River Hopscotch
- 单例模式
- 基于高可用(HA)集群的Apache+iscsi服务的配置
- LTE 中的参考信号
- 碎片杂料之创业失败:原因与出路
- E
- 我眼中的产品经理(2)
- MFC之CAsyncSocket详解
- SQLi labs 第五课练习(爆错注入法)
- CSU-ACM2017暑假集训比赛1 C