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 可能会出现空

最新文章

  1. dedecms二级导航标签调用使用的方法
  2. Strus2学习:基础(一)
  3. (Collection)350. Intersection of Two Arrays II
  4. 继电器是如何成为CPU的(2)
  5. Java:String和Date、Timestamp之间的转换
  6. eclipse智能提示
  7. ACdream 1128 Maze(费用流)
  8. linux 下su 和sudo 的用法以及区别
  9. 依赖注入容器Autofac的详解
  10. 部署nginx+rsyslog补丁
  11. solr 分词词库管理思路
  12. 探讨弹性布局Flexible Box
  13. elememtui(有关权限的那些事)
  14. php 将pdf转成图片且将图片拼接
  15. Get Total Sum Using Multithread Programming
  16. 网络协议 15 - P2P 协议:小种子大学问
  17. 各种浏览器兼容trim()的方法
  18. linux常用命令:Linux 文件类型与扩展名
  19. Android Studio 2.2 Record Espresso Test
  20. JAVA(一)变量

热门文章

  1. 微信h5游戏如何在微信中做好域名防封 防屏蔽的 工作
  2. LED Decorative Light Supplier - Decorative Use Of LED Light Strips
  3. HTML5学习(2)语义化
  4. 每天进步一点点------Allegro手工建立电路板
  5. Codeforces Round #567 (Div. 2) A.Chunga-Changa
  6. 「题解」「JZOJ-4238」纪念碑
  7. linux中history加入显示时间命令代码
  8. vue入门基础知识点测试
  9. 转载: HDMI 基础知识
  10. C语言最重要的知识点(电子文档)