五、【Java并发】JMM之happens-before

2021-08-24  本文已影响0人  deve_雨轩

happens-before

happens-before是Java内存模型最核心的概念,因此理解happens-before是理解Java内存模型的关键。

在Java语言中有个happens-before(先行发生)的原则。这个原则非常重要,它是判断数据是否存在竞争,线程是否安全的主要依据,依靠这个原则,我们就可以解决在并发环境中两个操作之间可能存在冲突的所有问题。下面我们来看个简单的例子:

i = 1; //A线程执行
j = i; //B线程执行
i = 2; //C线程执行

这里我们分两个情况来分析:

happens-before规则

Java内存模型下自带了写先行发生原则,这些先行发现原则无须任何同步器协助就已经存在,可以在编码中直接使用。如果两个操作之间的关系不在其中,并且无法从下面的规则推导出来的话,它们就没有顺序性保障,因为虚拟机可以对它们随意的进行重排序。

上一篇下一篇

猜你喜欢

热点阅读