Java并发之volatile详解 (3)

传递性A先行发生B,B先行发生C,那么,A先行发生C。

volatile boolean configured = false; // Thread1 while (!configured) {} // 操作3 doSometing(); // 操作4 // Thread2 loadConfig(); // 操作1 configured = true; // 操作2

在上面给的例子中,为configured添加volatile修饰,则根据先行发生规则有:

操作1先行发生于操作2(程序次序规则)

操作3先行发生于操作4(程序次序规则)

操作2先行发生于操作3(volatile变量规则)

操作1先行发生于操作4(传递性规则)

如此,即可确保程序按照预定逻辑正常执行。

本文也发布于掘金:https://juejin.cn/post/6998148242928042021/

参考

《深入理解Java虚拟机》

关键字: volatile详解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdfwy.html