1、privat static Singleton 要加votatile关键字修饰,防止对象的初始化代码与引用赋值代码进行重排序。

2、getInstance方法,最外层要加if (instance == null),然后加锁synchronized,然后再加if (instance == null)的判断

3、内层if (instance == null) 判断的作用是,如果没有这个内层的判断,多个线程都进入了外层的if (instance == null) 判断,并在锁的地方等待,那么势必会依次创建N个重复的对象,不是单例了。

示例代码如下:

public class Singleton {

    // 通过volatile关键字的使用,防止编译器将
// 1、初始化对象,2、给对象引用赋值
// 这两步进行重排序
private static volatile Singleton instance = null; private Singleton() { } public static Singleton getInstance() {
if (instance == null) {
synchronized (instance) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
} }

最新文章

  1. WCF学习之旅—WCF第二个示例(七)
  2. ARCGIS如何进行可视域分析
  3. task9暂存
  4. Android自定义控件2--优酷菜单界面初始化
  5. java中string stringbuilder stringbuffer 的区别
  6. 加密方式&数字签名
  7. adId、idfv
  8. Scrum 项目5.0
  9. js中arguments,caller,callee,apply的用法小结
  10. Linux 内存布局
  11. Cocos2d-x 重写draw方法绘制直线等图形时被遮挡覆盖问题的一种解决方案
  12. 图片上没有line-height垂直居中
  13. eclipse 手动安装皮肤
  14. CSS Text文本格式
  15. 高逼格的实现WiFi共享,不安装第三方wifi共享软件,两种方式实现开启wifi的功能
  16. vc++ ODBC
  17. 读Kafka Consumer源码
  18. HashMap浅入理解
  19. Linux配置中文输入法(搜狗输入法)
  20. 初试GH-OST(转)

热门文章

  1. IEDA 实现自动生成序列化号(serialVersionUID)
  2. Python——作业12(选做)选中矩阵的每行或每列画出对应的折线图(python programming)
  3. 2019.11.18【每天学点SAP小知识】Day4 - ABAP 7.40新语法 FOR
  4. xaml 中 引用嵌套类的对象
  5. 非UI线程更新UI界面的各种方法小结
  6. 【AMAD】splinter -- 用于测试web app的python框架
  7. Samba简单应用
  8. comodo firewall 科莫多离线安装
  9. 【0.3】mysql复制的日常管理维护,mysql复制常见问题处理
  10. C/C++的几个输入流