指令|(免费领取名企Java面试题)volatile作用,指令重排相关

(免费领取名企Java面试题)volatile作用 , 指令重排相关
【指令|(免费领取名企Java面试题)volatile作用,指令重排相关】Java是当下最热门的编程语言 , 越来越多的年轻人开始从事Java方面的工作 , 高就业率 , 高薪水的岗位 , 是吸引他们的原因 。 每个行业都有三六九等的区别 , 那如何在这个行业脱颖而出呢 , 那就需要扎实的基础 , 拥有一份好的基础就是拥有高薪的最好办法 , 那么今天就为大家带来Java面试题:volatile作用 , 指令重排相关 。
答:
理解volatile关键字的作用的前提是要理解Java内存模型 , volatile关键字的作用主要有两点:
多线程主要围绕可见性和原子性两个特性而展开 , 使用volatile关键字修饰的变量 , 保证了其在多线程之间的可见性 , 即每次读取到volatile变量 , 一定是最新的数据
代码底层执行不像我们看到的高级语言—-Java程序这么简单 , 它的执行是Java代码–>字节码–>根据字节码执行对应的C/C++代码–>C/C++代码被编译成汇编语言–>和硬件电路交互 , 现实中 , 为了获取更好的性能JVM可能会对指令进行重排序 , 多线程下可能会出现一些意想不到的问题 。 使用volatile则会对禁止语义重排序 , 当然这也一定程度上降低了代码执行效率
从实践角度而言 , volatile的一个重要作用就是和CAS结合 , 保证了原子性 , 详细的可以参见java.util.concurrent.atomic包下的类 , 比如AtomicInteger 。

    推荐阅读