博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Double-checked locking and the Singleton pattern--双重检查加锁失效原因剖析
阅读量:5091 次
发布时间:2019-06-13

本文共 965 字,大约阅读时间需要 3 分钟。

以下内容摘取自http://stackoverflow.com/questions/11195389/out-of-order-writes-for-double-checked-locking Thread1 could  publish the instance reference to the main memory, but fail to publish any other data inside the Singleton object that wascreated. Thread2 will observe the object in an inconsistent state. 大概意思是Thread2有可能在Thread1构造函数执行一部分的时候读取Instance,比如Vector赋值,但inUser为false时,这时候就会造成两个线程获取的instance状态不一致。
import java.util.Vector;class Singleton {    private static Singleton instance;    private Vector v;    private boolean inUse;    private Singleton() {        v = new Vector();        v.addElement(new Object());        inUse = true;    }    public static Singleton getInstance() {        if (instance == null) {            synchronized (Singleton.class) { // 1                if (instance == null) // 2                    instance = new Singleton(); // 3            }        }        return instance;    }}

 

转载于:https://www.cnblogs.com/bendantuohai/p/4754164.html

你可能感兴趣的文章
12个css实用技巧
查看>>
51系列小型操作系统精髓 简单实现2
查看>>
Python处理图片缩略图
查看>>
架构之微服务(zookeeper)转
查看>>
网络流量监测图形分析工具 Cacti
查看>>
php session 和cookie
查看>>
Java中的小知识。
查看>>
如何执行超过一百兆(100MB)的sql脚本?
查看>>
git merge的recursive策略和merge-base
查看>>
JS创建对象的几种方式
查看>>
python:实例化configparser模块读写配置文件
查看>>
博客首发
查看>>
redis源码分析之发布订阅(pub/sub)
查看>>
理解flexbox(一)
查看>>
团队项目视频介绍
查看>>
Schaepher 博客目录
查看>>
linux 网卡eth0检测时没有IP地址,怎么回事??
查看>>
OpenGL(三)MFC中应用OpenGL的两个类
查看>>
小白眼中的git操作
查看>>
【转载】java的常见类型转换
查看>>