JAVA单例实现方式(常用)
2024-09-05 22:11:13
JAVA单例实现方式(常用)
public class Singleton {
// Q1:为什么要使用volatile关键字?
private volatile static Singleton uniqueInstance;
private Singleton() {}
public static Singleton getInstance() {
if (uniqueInstance == null) {
/* Q2:为什么要使用synchronized (Singleton.class),使用synchronized(this)或者
synchronized(uniqueInstance)不行吗?而且synchronized(uniqueInstance)的效率更加高?*/
synchronized (Singleton.class) {
if (uniqueInstance == null) {
uniqueInstance = new Singleton();
}
}
}
return uniqueInstance;
}
}
Q1:可见的,一个地方修改所有地方同步可见并修改,使用volatile关键字会强制将修改的值立即写入主存
Q2:this 或 uniqueInstance 可能会出现空
最新文章
- dedecms二级导航标签调用使用的方法
- Strus2学习:基础(一)
- (Collection)350. Intersection of Two Arrays II
- 继电器是如何成为CPU的(2)
- Java:String和Date、Timestamp之间的转换
- eclipse智能提示
- ACdream 1128 Maze(费用流)
- linux 下su 和sudo 的用法以及区别
- 依赖注入容器Autofac的详解
- 部署nginx+rsyslog补丁
- solr 分词词库管理思路
- 探讨弹性布局Flexible Box
- elememtui(有关权限的那些事)
- php 将pdf转成图片且将图片拼接
- Get Total Sum Using Multithread Programming
- 网络协议 15 - P2P 协议:小种子大学问
- 各种浏览器兼容trim()的方法
- linux常用命令:Linux 文件类型与扩展名
- Android Studio 2.2 Record Espresso Test
- JAVA(一)变量
热门文章
- 微信h5游戏如何在微信中做好域名防封 防屏蔽的 工作
- LED Decorative Light Supplier - Decorative Use Of LED Light Strips
- HTML5学习(2)语义化
- 每天进步一点点------Allegro手工建立电路板
- Codeforces Round #567 (Div. 2) A.Chunga-Changa
- 「题解」「JZOJ-4238」纪念碑
- linux中history加入显示时间命令代码
- vue入门基础知识点测试
- 转载: HDMI 基础知识
- C语言最重要的知识点(电子文档)