lock 相关

Posted love_my_life

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lock 相关相关的知识,希望对你有一定的参考价值。

lock基本思路: volitile + CAS +Queue(存放线程)   实现了:   1 可见性(volitile 和  happenedBefor原则共同实现) 与  2 原子性(CAS ,CPU  指令实现)

共享锁和排它锁(ReentrantReadWriteLock):

共享锁与排他锁 共用一个线程队列。

在共享状态下,一个线程无论是获取还是释放锁的时候,都会试着去唤醒下一个等待在这个锁上的节点(通过上面的doAcquireShared代码能看出)。如果下一个线程也是处于共享状态等待在锁上,那么这个线程就会被唤醒,然后接着试着去唤醒下一个等待在这个锁上的线程,这种唤醒动作会一直持续下去,直到遇到一个在排它状态下阻塞在这个锁上的线程,或者等待队列全部被释放为止。
     因为线程是在一个FIFO的等待队列中,所以,这这样一个一个往后传递,就能保证唤醒被传递下去。

http://blog.csdn.net/yanlinwang/article/details/41172697

 

ReentrantLock 与 Condition 模型

整个协作过程是靠结点在AQS的等待队列和Condition的等待队列中来回移动实现的,Condition作为一个条件类,很好的自己维护了一个等待信号的队列,并在适时的时候将结点加入到AQS的等待队列中来实现的唤醒操作http://ifeve.com/understand-condition/

 

三个线程ABC,交替打印ABC

http://blog.csdn.net/luckybug007/article/details/70053596

 

CountDownLatch源码浅析

http://www.cnblogs.com/booth-sun/p/7241648.html

 

 

 

以上是关于lock 相关的主要内容,如果未能解决你的问题,请参考以下文章

synchronize底层实现原理以及相关的优化

python 相关

Lock,ReentrantLock,ReentrantReadWriteLock类的使用以及相关api---synchronized进阶

mysql 隔离级别和锁相关

进程相关2

synchronize底层实现原理以及相关的优化