ReentrantLock的实现原理

公平锁和非公平锁

判断依据是先请求获取锁则先满足即公平锁就是等待时间最长的线程先获取锁

非公平锁的继承关系图



非公平锁实现加锁的流程图

state:表示当前线程冲入的次数

lock()方法流程图

释放锁的流程图

自旋

LockSupport

Park,unpark类似于wait和notify

原理:通过许可(permit)的0或1来控制

park

unpark

好处:

1  unpark可以先于park调用,不像notify在调用wait方法前才能调用,否则则不起作用

2 减少代码的耦合度

公平锁和非公平锁实现原理区别

按照队列的先进先出为公平锁,区别有两个

非公平锁通过cas来获取锁,而公平锁不会

公平锁在判断是增加了是否有前一个节点,若有则需要前一个节点释放完之后,才能获取锁

你可能感兴趣的:(ReentrantLock的实现原理)