java并发相关内容

1. vilatile,锁和原子操作

这三个是理解java并发的基础。

简单来说,vilatile修饰的变量,可以保证对其的改变所有线程可见,这个机制实际上也是依赖原子操作的;

锁,主要分为偏向锁,轻量级锁和重量级锁;资源消耗也是越来越大的。使用java的synchronized的关键字或者新的锁用法,都是在这三种锁中做选择,jdk6之后默认优先使用偏向锁,也可以通过UseBaisedLocking=false关闭偏向锁。使用偏向锁的依据,一个是客观事实,通常都是同一个线程获取锁;另一个也是考量一个应用是否有大量的锁竞争。具体jvm内部如何实现锁的,可参见相关讲解并发书籍的资料。

原子操作,cpu通过两种方式保证操作是原子的,一个是锁定总线,效率低下,锁定数据总线,其它cpu也不能读取或者写入数据了;一个是使用cpu的L1,L2,L3级缓存(把相关数据读进缓存,然后使用cas算法保证原子性)。在某些情况下,数据跨多个行,或者同时修改多个数据,可能还是要锁定总线才能实现。

返回头说vilatile的实现机制,也就是原子性操作之后,再通知关心这个值变化的其它cpu更新自己的缓存。

 

转载于:https://www.cnblogs.com/wany82075/p/6056598.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值