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

Redisson的Lock和TryLock的区别

1️⃣ lock 方法

1.1 无参数版本

  • 行为:抢到锁后,线程会一直占有该锁

  • 线程挂掉:看门狗会持续续期锁

  • 风险:如果看门狗持续续期且线程未释放锁,其他线程阻塞等待 → 可能出现死锁

1.2 带参数版本 lock(leaseTime, unit)

  • 行为:抢到锁后,锁会在 leaseTime 到期后自动释放

  • 线程挂掉:锁仍会在 leaseTime 时间后释放,不依赖看门狗

  • 优势:避免线程异常或执行过长导致锁无限占用,降低死锁风险


2️⃣ tryLock 方法

2.1 两参数版本 tryLock(waitTime, unit)

  • 行为:尝试获取锁,最多等待 waitTime(例如 3 秒)

  • 获取锁成功

    • 锁的过期时间由 Redisson 看门狗自动延长

    • 直到手动释放锁

  • 获取锁失败

    • 等待时间到仍未获取 → 返回 false

    • 不会继续抢锁

2.2 三参数版本 tryLock(waitTime, leaseTime, unit)

  • waitTime:最多等待多久尝试获取锁(例如 3 秒)

  • leaseTime:锁的自动释放时间,不依赖看门狗

  • 行为

    • 如果 3 秒内获取到锁 → 返回 true,锁会在 leaseTime 到期后自动释放

    • 超过 3 秒仍未获取锁 → 返回 false

  • 优势:即使业务方法执行未完成,锁也会自动释放,避免死锁


总结对比表

方法参数等待时间锁持有时间看门狗死锁风险
lock()无限持有直到手动释放
lock(leaseTime)leaseTime无限最多 leaseTime
tryLock(waitTime)waitTimewaitTime看门狗延长很低
tryLock(waitTime, leaseTime)waitTime, leaseTimewaitTimeleaseTime很低

如果你希望,我可以帮你画一张 lock vs tryLock 时序图,直观展示“等待、持锁、看门狗续期、释放锁”的流程,让整个逻辑一眼就看懂。

你希望我画吗?

http://www.dtcms.com/a/414145.html

相关文章:

  • VLA技术论文阅读
  • find数组方法详解||Vue3 + uni-app + Wot Design(wd-picker)使用自定义插槽内容写一个下拉选择器
  • 怎么找做网站平台公司技术支持 湖北网站建设
  • 大型活动临时组网的技术解析:如何实现高效稳定的通信网络
  • 个人博客网站实验报告wordpress 页面新建
  • ZYNQ CAN接口全面解析:从裸机驱动到PetaLinux实战
  • AI 重构实体经济:2025 传统产业转型的实践与启示
  • 安宝特产品丨FME Realize:重构数据与现实的边界,让空间计算赋能现场决策
  • 第二篇: `nvidia-smi` (下) - 自动化监控与脚本
  • 配音与字幕不同步?音视频协同生成的技术原理与落地实践
  • p2p信贷网站建设永州网站建设优化
  • 批次标准化学习(第十六周周报)
  • .NET Core 中 System.Text.Json 与 Newtonsoft.Json 深度对比:用法、性能与场景选型
  • 高通平台 WLAN学习-- 性能优化优化实践:从代码层面解析 P2P 连接性能提升方案
  • 企业应该如何建设网站建立网站的信息集成过程
  • 做股权众筹的网站中国官网
  • 帆软Report11多语言开发避坑:法语特殊引号导致SQL报错的解决方案
  • ODPS SQL,对group by里每个group用python进行处理
  • (基于江协科技)51单片机入门:4.矩阵键盘
  • PPT auto Crorrector
  • MSSQL字段去掉excel复制过来的换行符
  • 学前端视频笔记
  • 【Navicat实现 SQL Server 异地 定时备份】
  • GitOps实战:ArgoCD+Tekton打造云原生CI/CD流水线
  • (基于江协科技)51单片机入门:3.静态数码管
  • 团支部智慧团建网站Wordpress调用搜索
  • 什么是ppm,ppb,ppt?
  • LeetCode 389 找不同
  • gitlab解决合并冲突本地处理的步骤
  • 趣谈Bug -500英里邮件问题