Bootstrap

Redisson的可重入锁

在这里插入图片描述

初始状态:

表示系统或资源在没有线程持有锁的情况下的状态,任何线程都可以尝试获取锁。

线程 1 获得锁:

线程 1 首次获取了锁并进入受保护的代码区域。

线程 1 再次请求锁:

在持有锁的情况下,线程 1 再次请求锁,展示了可重入锁的特性——线程可以在持有锁的情况下重新进入锁区域而不会阻塞。

线程 1 释放锁:

线程 1 完成任务,开始释放锁。在可重入锁的情况下,需要释放与请求次数相同的次数,线程 1 完全释放锁后,锁恢复到初始状态。

线程 2 等待锁:

当线程 1 持有锁时,线程 2 试图获取锁但被阻塞,进入等待状态。这个节点表示线程 2 被阻塞等待的状态。

线程 2 获得锁:

线程 1 完全释放锁后,锁恢复为初始状态,线程 2 能够获取锁,进入受保护的代码区域。

线程 2 释放锁并返回初始状态:

线程 2 完成任务后,释放锁,系统回到初始状态,其他线程可以尝试获取锁。

;