当前位置: 首页 > news >正文

SpringCloud 分布式锁Redisson锁的重入性 高并发 获取锁

介绍

Redisson 的锁支持 可重入性,这意味着同一个线程在获取锁后,如果再次尝试获取该锁,它可以成功地获得锁,而不会被阻塞。

  • 每次一个线程成功获取锁后,它的持有次数会增加。当线程再次获取该锁时,Redisson 会检查该线程是否已经持有锁。如果是,它会允许该线程再次获取锁,并将持有次数递增。
  • 每次释放锁时,持有次数会递减,直到持有次数变为零,锁才会被完全释放。

在这里插入图片描述

  public static void main(String[] args) {// 创建 Redisson 客户端配置Config config = new Config();config.useSingleServer().setAddress("redis://localhost:6379"); // 连接到本地 Redis 服务器RedissonClient redisson = Redisson.create(config);// 获取分布式锁RLock lock = redisson.getLock("accountLock");try {// 模拟账户操作的过程:先获取锁,进行第一次操作lock.lock();  //+1System.out.println("Lock acquired for the first time!");// 业务逻辑:扣款deductBalance(lock);} finally {// 释放锁:必须要释放与 lock.lock() 相同次数的 unlock() 才能完全释放锁lock.unlock();  //-1System.out.println("Lock released after first operation.");}}// 模拟业务逻辑:扣款操作private static void deductBalance(RLock lock) {// 业务逻辑需要在同一个线程中再次获取锁(模拟可重入性)lock.lock();//+1try {System.out.println("Lock acquired for the second time, performing deduct balance operation...");// 扣款逻辑,比如账户余额减少System.out.println("Balance deducted!");} finally {// 释放锁lock.unlock();//-1System.out.println("Lock released after deduct balance operation.");}}

当value值为0时就会释放锁。
在这里插入图片描述

http://www.lqws.cn/news/93835.html

相关文章:

  • WAF绕过,网络层面后门分析,Windows/linux/数据库提权实验
  • Day11
  • 【Spring AI】调用 DeepSeek 实现问答聊天
  • 使用Process Explorer、System Informer(Process Hacker)和Windbg工具排查软件高CPU占用问题
  • 4-C#的不同窗口传值
  • Linux下使用nmcli连接网络
  • 【Pytorch学习笔记】模型模块08——AlexNet模型详解
  • VR 虚拟仿真工器具:开启医学新视界的智慧钥匙​
  • LeetCode hot100-11
  • 1.6万字测评:deepseek-r1-0528横向对比 gemini-2.5-pro-0506和claude4
  • 3.1 HarmonyOS NEXT分布式数据管理实战:跨设备同步、端云协同与安全保护
  • MongoDB-6.0.24 主从复制搭建和扩容缩容详解
  • MongoDB账号密码笔记
  • 从0到1认识EFK
  • 【Linux】线程互斥
  • 手机邮箱APP操作
  • 深度解析 Qt 最顶层类 QObject:继承关系与内存生命周期管理
  • Free2AI 实战指南:低成本、高扩展的企业级 AI 解决方案​
  • 【QT】在Qt6的`QTextEdit`中,同一行更新内容
  • WSL2 + RK3568 SDK 编译踩坑笔记
  • 【软件工程】可行性研究
  • Gradle依赖管理全面指南:从基础到高级实践
  • 对 `llamafactory-cli api -h` 输出的详细解读
  • YOLO学习笔记 | 一种用于海面目标检测的多尺度YOLO算法
  • 《数据挖掘》- 房价数据分析
  • Neo4j 备份与恢复:原理、技术与最佳实践
  • Neo4j 数据可视化与洞察获取:原理、技术与实践指南
  • LeetCode 300 最长递增子序列
  • MySQL关系型数据库学习
  • AWS VPC 网络详解:理解云上专属内网的关键要素