happen-before 原则详解

    xiaoxiao2024-11-06  110

    1.happen-before 原则是什么?

    happen-before 原则是作为java 内存模型(JMM)的一部分。它规定了若A操作happen-befroe B操作,那么A操作对与B操作来说是可见的。JVM在实现的时候就确保了是能够满足happen-before 原则的。

    2.为什么会出现happen-before 原则?

    java 存在线程工作内存及主内存(多核cpu及多级缓存导致),线程对变量的操作都是在工作内存中进行的,那么多线程的操作必然会导致共享数据的错乱操作系统会对指令进行重排序,在多线程环境下,重排序对会线程的执行结果及执行顺序造成严重的影响

    通过对happen-before原则的定义,可以满足多线程环境下,程序能正常安装我们预想的路径进行执行,满足我们预想的结果。

    3.JVM 依靠什么来实现happen-before 原则呢?

    主要是依靠内存屏障。

    3.happen-before 原则的具体内容

    程序次序规则

    不能简单滴认为,写在前面的代码就先于后面的代码先执行,这个规则,一般需要与其他规则配合起来。

    一般值指的是的真正指令执行顺序若A happen-before B

    voliate 的写happen-before 读传递性原则线程start 原则

    主线程start 子线程。则主线程的操作对于子线程是可见的

    线程join原则线程interupt原则synchronized 原则

    同一个锁的unlock操作happen-before此锁的lock操作

    最新回复(0)