您的位置:首页 > 编程语言 > Java开发

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问题:可以通过添加版本号或者打标签来避免
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  并发