一、内存模型 首先我们思考一下一个java线程要向另外一个线程进行通信,应该怎么做,我们再把需求明确一点,一个java线程对一个变量的更新怎么通知到另外一个线程呢?我们知道java当中的实例对象、数组元素都放在java堆中,java堆是线程共享的。(我们这里把java堆称为主内存),而每一个线程都是 ...
分类:
编程语言 时间:
2018-07-05 14:54:26
阅读次数:
128
昨天的 Java 实现单例模式 中,我们的双重检验锁机制因为指令重排序问题而引入了 volatile 关键字,不少朋友问我,到底为啥要加 volatile 这个关键字呀,而它,到底又有什么神奇的作用呢? 对 volatile 这个关键字,在昨天的讲解中我们简单说了一下:被 volatile 修饰的共 ...
分类:
编程语言 时间:
2018-07-04 14:30:02
阅读次数:
160
内存屏障有两个能力:1. 阻止屏障两边的指令重排序。2. 强制把写缓冲区/高速缓存中的脏数据等写回主内存,让缓存中相应的数据失效。 对Load Barrier来说,在读指令前插入读屏障,可以让高速缓存中的数据失效,重新从主内存加载数据。对Store Barrier来说,在写指令之后插入写屏障,能让写 ...
分类:
其他好文 时间:
2018-06-13 12:02:54
阅读次数:
216
「 天行健,君子以自强不息。地势坤,君子以厚德载物。」———《易经》 volatile 变量,在上一篇文章中已经有简单提及相关概念和用法,这一篇主要对 Volatile 变量的特性进行源码验证。验证它的涉及到的三个特性: 可见性 指令重排序 非原子性 volatile 之可见性验证 上一篇文章中,讲 ...
分类:
编程语言 时间:
2018-06-06 01:13:31
阅读次数:
232
「 天行健,君子以自强不息。地势坤,君子以厚德载物。」———《易经》volatile 变量,在上一篇文章中已经有简单提及相关概念和用法,这一篇主要对 Volatile 变量的特性进行源码验证。验证它的涉及到的三个特性:可见性指令重排序非原子性volatile 之可见性验证上一篇文章中,讲到 volatile 变量通常被当做状态标记使用。其中典型的应用是,检查标记状态,以确定是否退出循环。下面我们直
分类:
编程语言 时间:
2018-05-29 22:50:24
阅读次数:
275
package com.fh.interview; /** * @author * @create 2018-05-27 下午4:40 **/ public class JMMTest { /** * 源代码--编译器指令重排序(编译器)--指令并行重排序(处理器)--内存指令重排序(处理器) * ...
分类:
其他好文 时间:
2018-05-27 18:33:20
阅读次数:
184
@Slf4j public class SimpleHappenBefore { private static int a = 0; private static boolean flag = false; public static void main(String[] args) throws ... ...
分类:
编程语言 时间:
2018-05-18 14:12:48
阅读次数:
203
前言要学习好Java的多线程,就一定得对volatile关键字的作用机制了熟于胸。最近博主看了大量关于volatile的相关博客,对其有了一点初步的理解和认识,下面通过自己的话叙述整理一遍。有什么用?volatile主要对所修饰的变量提供两个功能可见性防止指令重排序<br>本篇博客主要对volatile可见性进行探讨,以后发表关于指令重排序的博文。什么是可见性?一图胜千言上图已经把JA
分类:
编程语言 时间:
2018-05-17 21:41:33
阅读次数:
236
jdk1.6以后提供了java并发包。 volatile与内存可见性: 例子: 结果: 结论: main()线程读取到的td.isFlag并不是true。 这就涉及到了内存可见性问题。 具体原因: 重排序:代码书写的顺序与实际执行的顺序不同。 1. 编译器重排序 2. 指令重排序 3. 内存系统重排 ...
分类:
其他好文 时间:
2018-04-29 18:42:29
阅读次数:
171
防止指令重排:对volatile的写操作先于对volatile的读操作。 synchronized虽然保证了原子性,但却没有保证指令重排序的正确性,会出现A线程执行初始化,但可能因为构造函数里面的操作太多了,所以A线程的uniqueInstance实例还没有造出来,但已经被赋值了。而B线程这时过来了 ...
分类:
其他好文 时间:
2018-04-21 14:25:28
阅读次数:
194