多线程
请谈谈你对volatile的理解
❒ 保证线程间的可见性 ✔ 用volatile修饰共享变量,能够防止编译器等优化发生,让一个线程对共享变量的修改对另一个线程可见(避免实时编译器JIT优化代码)。 ❒ volatile禁止指令重排序 ✔ 用 volatile 修饰共享变量会在读、写共享变量时加入不同的屏障,阻止其他读写操作越过屏障,从而达到阻止重排序的效果。
❒ 请谈谈你对volatile的理解 ①保证线程间的可见性 ✔ 用 volatile修饰共享变量,能够防止编译器等优化发生,让一个线程对共享变量的修改对另一个线程可见 ②禁止进行指令重排序 ✔ 指令重排:用volatile修饰共享变量会在读、写共享变量时加入不同的屏障,阻止其他读写操作越过屏障,从而达到阻止重排序的效果