指令重排现象,以下图示例:线程 one中的 a=y,x=1 实际执行时,可能会先执行 a=y,再执行 x=1;也可能先执行 x=1,再执行 a=y;因为这两行代码之前是不存在依赖,如果存在以来,计算机则不会对其进行指令重排序
高并发双重检测锁,以单例模式为例: 双重判断,假如线程A获得锁并进行创建 DoubleCheckLockSingleton 实例时,线程B实际已经执行完第一层 instance == null 在等待锁,当线程A执行完创建 了DoubleCheckLockSingleton实例,如果没有第二层 instance == null 判断,则线程B会再创建一个 DoubleCheckLockSingleton实例;双重检测防止重复创建;
volatile关键词确保避免 创建实例时指令重排
高并发下双重检测锁指令重排问题
最新推荐文章于 2023-04-04 17:00:13 发布