Java并发编程实战
来源:互联网 发布:黑魂2日系妹捏脸数据 编辑:程序博客网 时间:2024/05/21 23:00
原子变量与非阻塞同步机制
并发非阻塞算法
用底层的原子机器指令(如比较并交换指令CAS)代替锁保证数据在并发访问下的一致性。
锁的劣势
锁是独占式访问,挂起和恢复线程的开销很大,而且容易出现死锁等活跃性问题。
尤其对那些细粒度的操作(如递增计数器),加锁的方式开销很大。
利用现代处理器提供的原子操作指令(如CAS) 处理细粒度的操作,效率更高。
锁是一种悲观技术;CAS 是一种乐观技术。
CAS: 比较并交换, 包含三个操作,读取内存位置V,进行比较的值A, 和拟写入的新值B。仅当V的位置的值是A是,更新为B,无论是否为A,总是返回旧值。
原子变量类
JVM 原子变量类实现了底层的CAS, 直接利用硬件对并发的支持。
最常用的原子变量类有:
AtomicInteger
AtomicLong
AtomicBoolean
AtomicReference
原子变量类是可以修改的, 没有重新定义hashCode 和 equals方法,每个实例都是不同的(可变对象),不宜做基于散列的容器的键值。
锁与原子变量的性能比较
在中低程度的竞争下,原子变量提供更高的可伸缩性;
在高强度的竞争下,锁能更有效地避免竞争。
0 0
- Java并发编程实战
- Java并发编程实战--
- Java并发编程实战-
- Java 并发编程实战
- java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- Java并发编程实战
- OkHttp源码解析2
- AS3.0游戏内嵌网页
- RMQ (Range Minimum/Maximum Query)算法(查询区间最值)
- FluentValidation具体使用案例
- android matrix 最全方法详解与进阶(完整篇)
- Java并发编程实战
- jquery 添加插入元素技巧<前面和后面>
- Charles让你更方便的在Mac下抓取移动端http/https数据包(http://zhiqiangbuxi.cn/?p=281)
- HDU2084数塔(数字三角形)
- 第二章 列表和元组
- iOS社招面试题2
- 最简单rbac实现方法
- JAVA 状态机
- iOS 申请开发者账号-总结