【Java多线程】$2 使变量在多个线程间可见之 volatile关键字

1. 作用

volatile 修饰的变量 具有线程可见性。内存结构分为私有堆栈和公共堆栈。正常访问(修改),是访问(修改)本线程内的私有堆栈,实际对变量所属线程并未影响,如果希望修改,那就必须将变量提升为其他线程可见,即volatile,强制从公共堆栈中取值

2. 特点
  • volatile关键字是线程同步的轻量级实现,所以volatile比synchronized性能高,但是volatile无法保证原子性。
  • volatile不会发生阻塞,synchronized会发生阻塞
  • volatile无法保证原子性,但是synchronized既可保证原子性,也间接的保证了可见性,他会将私有内存和公共内存中的数据做同步
  • 一段 synchronized(x){}表达式即可保证私有内存和公共内存的数据同步
3. 原子类

原子类只是在方法内保持原子性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值