Double Check Locking 双检查锁机制
2024-10-19 17:19:25
方法保证了多线程并发下的线程安全性。
这里在声明变量时使用了volatile关键字来保证其线程间的可见性;在同步代码块中使用二次检查,以保证其不被重复实例化。集合其二者,这种实现方式既保证了其高效性,也保证了其线程安全性。
package com.test; public class MyObject{
volatile private static MyObject instance; private MyObject() {
} public static MyObject getInstance() { // 对获取实例的方法进行同步
try {
if (instance == null) {
synchronized (MyObject.class) {
if (instance == null) {
instance = new MyObject();
}
}
System.out.println(instance);
}
} catch (Exception e) {
e.printStackTrace();
}
return instance;
}
}
最新文章
- Xamarin.Android之Fragment Walkthrough
- ORM框架示例及查询测试,上首页修改版(11种框架)
- edit界面初始化加默认值
- 关于float高度塌陷问题
- [c++]默认参数
- 如何在centos 6.7 上安装oracle 11gR2
- MSDN for VS2012 的安装
- js判断手机浏览器并跳转到手机网站
- margin:0 auto;不能居中的原因
- [Unity菜鸟] Unity Web Player 相关问题 (待完善)
- PHP 错误处理
- POJ 3923 Ugly Windows(——考察思维缜密性的模拟题)
- 转:Java中Scanner类和BufferReader类之间的区别
- [蓝桥杯]ALGO-97.算法训练_排序
- Intel P6以来核心架构及对应型号、芯片组一览表
- docker探索-windows10 docker 使用 mysql(二)
- asp.net WebService的一个简单示例
- [2016北京集训试题8]连在一起的幻想乡[dp+无向图计数]
- 使用chardet判断编码方式
- (linux shell)第二章--命令之乐(一)