Redisson的可重入锁

embedded/2024/11/17 21:46:51/

在这里插入图片描述

初始状态:

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

线程 1 获得锁:

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

线程 1 再次请求锁:

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

线程 1 释放锁:

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

线程 2 等待锁:

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

线程 2 获得锁:

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

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

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


http://www.ppmy.cn/embedded/138353.html

相关文章

CSS盒子的定位>(上篇)#定位属性#相对定位-附练习

一、定位属性 1.定位方式 position属性可以选择4种不同类型的定位方式。 语法格式:position:relation | absolute | fixed参数:①relative生成相对定位的元素,相对于其正常位置进行定位。 ②absolute生成绝对定位的…

uniapp 本地打包后使用http-server预览不了

使用nginx处理 我的环境 Apple M3 Max 14.1 (23B2073) 安装nginx brew install nginx找到nginx.conf文件 /opt/homebrew/etc/nginx/nginx.conf增加server server {listen 8091; # 或者其他未被占用的端口server_name localhost;location / {root /path/to/your/project/u…

如何实现主备租户的无缝切换 | OceanBase应用实践

对于DBA而言,确保数据库的高可用性、容灾等能力是其日常工作中需要持续思考和关注的重要事项。一方面,可以利用数据库自身所具备的功能来实现这些目标;若数据库本身不提供相应功能,DBA则需寻找其他工具来增强数据库的高可用性和容…

jenkins用户在执行scp的时候如何做免密登录

一、背景 在jenkins job中执行scp的shell命令,当然不希望每次输入密码,另外处于出于安全考虑,也不建议在scp命令中指定。 所以,我们需要对远程机器进行免密登录。 本文遇到的问题是,在jenkins机器上执行scp已做到了…

Flutter:InheritedWidget数据共享

未使用数据共享时,要传递数据,只能组件间一级一级向下传递 下边代码中,创建了一个按钮,当点击时_count, 并将数据通过Test1(count)传递给Test2(count),最终传递给Test3(count)进行渲染展示。 import packa…

麒麟系统下docker搭建jenkins

首先我们需要创建宿主机挂载路径,我这里放在本地的/data/henkins/home,然后赋予权限,命令如下: mkdir -p /data/jenkins/home chown -R 1000:1000 /data/jenkins/home chmod -R 777 /data/jenkins/homedocker run -d --restart …

【小白可懂】微信小程序---课表渲染

结果展示:(代码在最后) WeChat_20241116174431 项目简介 在数字化校园建设的大背景下,为了更好地服务于在校师生,我们开发了一款基于微信小程序的课表管理系统。该系统采用了现代化的前端技术和优雅的设计风格&#x…

leetcode hot100【LeetCode 5.最长回文子串】java实现

LeetCode 5.最长回文子串 题目描述 给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。 示例 1: 输入: s "babad" 输出: "bab" 解释: "aba" 也是一个有效答案。示例 2: 输入: s "cbbd" 输出: "bb"说明: 1 <…