volatile关键字

volatile关键字

1 volatile关键字的作用

1.1 保证内存的可见性

多线程主要围绕可见性和原子性两个特性而展开,使用volatile关键字修饰的变量,保证了其在多线程之间的可见性,即每次读取到volatile变量,一定是最新的数据。

1.2 禁止指令重排序

代码底层执行不像我们看到的高级语言—-Java程序这么简单,它的执行是Java代码–>字节码–>根据字节码执行对应的C/C++代码–>C/C++代码被编译成汇编语言–>和硬件电路交互,现实中,为了获取更好的性能JVM可能会对指令进行重排序,多线程下可能会出现一些意想不到的问题。使用volatile则会对禁止语义重排序,当然这也一定程度上降低了代码执行效率

2 volatile的适用场景

1、volatile是轻量级同步机制,不会执行加锁操作,因此也不会使执行线程阻塞。
2、volatile无法同时保证内存可见性和原子性。
3、当要访问的变量已在synchronized代码块中,或者为常量时,没必要使用volatile。

    原文作者:风清若影
    原文地址: https://blog.csdn.net/qq_37602929/article/details/103364969
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞