volatile关键字的作用

1.volatile修饰的变量,能够保证“内存可见性”:

代码在写入volatile修饰的变量时:

①当一个被volatile关键字修饰的变量被一个线程修改的时候,其他线程可以立刻得到修改后的结果。

②当一个线程向被volatile修饰的变量写入数据的时候,虚拟机会强制他被刷新到主内存中,保证每次都是从主内存中读取变量的值。

代码在读取volatile修饰的变量时:

①从主内存中读取volatile变量的最新值到线程的工作内存(cpu寄存器或cpu缓存),缓存的读取速度介于寄存器和内存之间。

②当一个线程被volatile修饰时,修改后也可直接在主内存中读取。(cpu每次都需要从主内存中读取,性能会减弱)

2.volatile修饰的变量,不保证“原子性”

volatile强制读写内存,适用于一个线程读,一个线程写~(速度是变慢了,但是数据变得更准确)

3.volatile修饰的变量,能够防止指令重排序:

指令重排序是编译器和处理器为了高校对程序优化的手段,只能保证程序的执行结果正确,但无法保证程序的操作执行顺序和代码顺序一致。指令重排序在单线程中不会出现问题,在多线程中会出现问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值