Java基础 -> 如何理解volatile关键字

如何理解volatile关键字

变量对所有线程总是可⻅的

  • 保证被volatile修饰的共享变量对所有线程总是可⻅的,也就是当⼀个线程修改了⼀个被volatile修饰共享变量的值,新值总是可以被其他线程⽴即得知。

    • 因为cpu执行一般来说是有缓存的,一级二级三级缓存之后才到真正的内存
    • 对一个变量进行修改,会先走一级 -> 二级 -> 三级再到内存的步骤
    • 所以不会直接修改到内存的值
    • 如果要⽴即看到值的修改禁用缓存或者跳过缓存直接修改内存中的数据
  • volatile可以简单的理解为,对这个关键字修饰的变量,会直接修改内存中的值,会直接读取内存中的值,不会经过缓存

  • 使⽤volatile关键字会强制将修改的值⽴即写⼊主存

禁⽌指令重排序优化

  • JVM 存在指令重排volatile关键字可以使程序严格按照代码的先后顺序执行
  • 听说是会指令重排,但是我对这个不大了解,只知道会改变代码顺序
  • 而使用了volatile关键字的变量的一些操作就不会出现指令重排
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值