java多线程-volatile

新的解决线程安全性问题的方案volatile


syncronized可以解决线程中遇到的安全性问题
相对来说重量级锁
虽然jdk6增加了轻量级锁和偏向锁
实际情况使用起来显得笨重




volatile属于轻量级锁,被volatile修饰的变量在线程之间是可见的




可见:一个线程修改了这个变量的值
在另外一个线程中能够独到这个修改后的值


synchronized除了线程之间互斥以外,还有一个
非常大的作用,就是保证可见性(前提多个线程拿到的是同一把锁)
 
加了volatile在汇编中多了lock指令


lock指令
 /在多处理器的系统上,将当前处理器缓存行(cpu缓存的最小单位)的内容写回到系统内存
 /写回到内存的操作会使在其他cpu里缓存了该内存
地址的数据失效




硬盘--内存--CPU的缓存()


在适用场景下使用,比synchronized性能高得多
而在一个方法中大量使用volatile,cpu的缓存就用不上了;
通过volatile修饰,会减少大量cpu的优化;
系统性能降低了



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值