java并发-读书笔记
2015-08-17 21:51
253 查看
java并发-读书笔记
锁的作用1.独占的方式访问变量
2.使变量的修改对于其他的线程具有可见性
锁的劣势
1.当多个线程争取同一个锁时,未获的锁的失败的线程会挂起,等待锁的分配,在稍后被分配到锁的资源后,才会被重新唤醒,调度执行。在这个挂起和恢复的过程中,存在着开销+较长时间的中断。
2.活性问题,线程可能永久阻塞。
3.优先级反转。
锁是一种悲观的解决方法。
volatile:只提供了可见性,不能用来解决变量依赖的同步问题。
CAS:compareAndSwap,compareAndSet
volatile boolean ret =false; Unsafe unsafe = Unsafe.getUnsafe(); Integer obj = new Integer(4); while(!ret) ret = unsafe.compareAndSwapInt(obj,1,1,2);
CAS:通过循环检查变量值的改变来获得对变量的改变,从而实现同步。
ABA问题:可以通过添加版本号或者打标签来避免
相关文章推荐
- 探究在C++程序并发时保护共享数据的问题
- 浅析PHP中Session可能会引起并发问题
- Oracle 数据库针对表主键列并发导致行级锁简单演示
- MySQL中SELECT+UPDATE处理并发更新问题解决方案分享
- Java并发编程中的生产者与消费者模型简述
- Java中同步与并发用法分析
- Go语言并发模型的2种编程方案
- Go语言并发技术详解
- JAVA多线程与并发学习总结分析
- JAVA多线程和并发基础面试问答(翻译)
- 在Java内存模型中测试并发程序代码
- 线程池的理解
- 自旋锁学习系列(3):指数后退技术
- JAVA并发编程
- java实现简单的并行计算框架
- Java之线程安全的简单理解
- 使用Python进行并发编程
- 初识英特尔线程构建模块之内存管理tbb_malloc
- 并发和并行的区别
- PV与并发之间换算的算法换算公式