首页 > 代码库 > java并发相关内容
java并发相关内容
1. vilatile,锁和原子操作
这三个是理解java并发的基础。
简单来说,vilatile修饰的变量,可以保证对其的改变所有线程可见,这个机制实际上也是依赖原子操作的;
锁,主要分为偏向锁,轻量级锁和重量级锁;资源消耗也是越来越大的。使用java的synchronized的关键字或者新的锁用法,都是在这三种锁中做选择,jdk6之后默认优先使用偏向锁,也可以通过UseBaisedLocking=false关闭偏向锁。使用偏向锁的依据,一个是客观事实,通常都是同一个线程获取锁;另一个也是考量一个应用是否有大量的锁竞争。具体jvm内部如何实现锁的,可参见相关讲解并发书籍的资料。
原子操作,cpu通过两种方式保证操作是原子的,一个是锁定总线,效率低下,锁定数据总线,其它cpu也不能读取或者写入数据了;一个是使用cpu的L1,L2,L3级缓存(把相关数据读进缓存,然后使用cas算法保证原子性)。在某些情况下,数据跨多个行,或者同时修改多个数据,可能还是要锁定总线才能实现。
返回头说vilatile的实现机制,也就是原子性操作之后,再通知关心这个值变化的其它cpu更新自己的缓存。
java并发相关内容
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。