
JVM / JUC 谈谈对 volatile 的理解
前言一旦一个共享变量类的成员变量类的静态成员变量被volatile修饰之后那么就具备了两层语义保证线程间的可见性禁止进行指令重排序保证线程间的可见性用volatile修饰共享变量能够防止编译器等优化发生让一个线程对共享变量的修改对另一个线程可见uploadbaedbcbdeapng运行结果uploadbcdbecceeedpng明明已经把stop改成了true但是第三个线程依然没有打印stoppedc说明一直在死循环即其他线程没有感知到stop的变化问题分析主要是因为在JVM虚拟机中有一个JIT即时编译器给代码做了优化uploadebfeaafdcdbbecapng解决方案一在程序运行的时候加
2023-12-12 11:36 1204 0 JUC