【Java】volatile那些事

精简

olatile是Java中的一种关键字,用于保证内存可见性和禁止指令重排序等。在多线程环境下,使用volatile可以有效避免竞态条件和死锁等问题。

实现原理:

(1)内存屏障:volatile关键字通过插入内存屏障来实现其语义。内存屏障分为读屏障、写屏障和全屏障,分别用于保证对当前变量的读取、写入和对所有变量的操作的内存可见性。

(2)禁止指令重排序:volatile关键字还可以禁止编译器和处理器对其修饰的变量进行指令重排序。具体地,当一个变量被volatile修饰时,在其前面的所有操作不会被重排序到其后面,而在其后面的所有操作也不会被重排序到其前面。

总之,通过内存屏障和禁止指令重排序等机制,volatile关键字可以保证变量的内存可见性和禁止指令重排序等,从而在多线程环境下提高程序的稳定性和可靠性。

内存屏障分为读屏障和写屏障。

当一个线程首次访问某个volatile变量时,JVM会向处理器发出一条lock前缀的指令,这个指令会触发两件事情:

将这个处理器缓存行的数据写回到系

猜你喜欢

转载自blog.csdn.net/CSDN_SAVIOR/article/details/129771782