妙博客

主机评测 香港服务器 洛杉矶VPS测评

java中volatile关键字的作用

这个关键字主要是保证了对其它线程的可见性和代码执行的有序性


可见性:

当一个变量被定义为Volatile类型时,任何对它的修改都会立即刷新到主内存中,而不是等到线程结束或者锁被释放。同时,当其他线程需要访问这个变量时,它们会从主内存中读取最新的值。这样就保证了线程间数据的一致性。


有序性:

防止指令重排序

内存屏障(memorybarrier)是一个CPU指令,这条指令可以确保一些特定指令的执行顺序。插入一个内存屏障,相当于告诉CPU和编译器先于这个命令的必须先执行,后于这个命令的必须后执行。内存屏障另一个作用是强制更新一次不同CPU的缓存。


使用场景:

一般用在多线程读单线程写的场景,在这种情况下,Volatile可以用来作为标识完成、中断或状态变化的标记。它的主要作用是确保在读取那个时刻读到的确实是最新值,利用其可见性特性。

Copyright Your 142132.com Rights Reserved. 赣ICP备17010829号-2