码迷,mamicode.com
首页 > 编程语言 > 详细

java并发相关内容

时间:2016-12-30 15:31:03      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:自己的   缓存   java   效率   如何   als   关键字   关闭   实现   

1. vilatile,锁和原子操作

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

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

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

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

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

 

java并发相关内容

标签:自己的   缓存   java   效率   如何   als   关键字   关闭   实现   

原文地址:http://www.cnblogs.com/wany82075/p/6056598.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!