JUC-ReentrantLock


默认非公平

可重入锁,基于AQS

1、静态内部类Sync

实现了tryRelease方法

自定义了nonfairTryAcquire() :非公平的加锁

2、实现了Sync的两个子类

NonfairSync:

直接继承了Sync

FairSync:

覆写了tryAcquire,里面多了两个判断

即:若state等于0,再判断等待队列中是否有其他线程,

整体比较简单,都是使用setState和compareAndSetState,进行判断

关键字

state:用来表示持有锁的次数,用于可重入

自定义的AQS:Sync

内部实现了tryRelease

加锁:复写tryAcquire

通过cas加锁,尝试设置state为1

若成功,则加锁成功

若失败,则使用AQS的acquire,阻塞地加锁

锁为非公平锁

解锁:


文章作者: 王利康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 王利康 !
  目录