Redission看门狗

ops/2025/2/22 11:34:44/

在 Redisson 中,lock.tryLock() 和 lock.lock() 是两种不同的加锁方式,它们的行为有所不同:

  1. lock.lock():这是阻塞方法,当调用时,如果锁当前不可用,线程将被阻塞,直到获取到锁。如果锁被其他线程持有,当前线程会一直等待,直到锁被释放。

  2. lock.tryLock():这个方法是非阻塞的。它尝试获取锁,如果锁当前不可用,线程不会被阻塞,而是会立即返回一个布尔值来表示是否成功获取锁。

  3. lock.tryLock() 还有另外两种重载形式:

    lock.tryLock(long waitTime, long leaseTime, TimeUnit unit):这个方法尝试在指定的等待时间内获取锁。如果锁在等待时间内可用,则获取锁并返回 true。如果锁在等待时间内不可用,则返回 false。一旦获取到锁,锁会保持指定的租用时间(leaseTime),然后自动释放。

    lock.tryLock(long leaseTime, TimeUnit unit):这个方法尝试获取锁,如果锁当前不可用,线程会立即返回 false。如果锁可用,则获取锁并返回 true。锁会保持指定的租用时间(leaseTime),然后自动释放。

  4. 至于看门狗机制,Redisson 提供了一个自动的续期机制来防止死锁。当你使用 lock.lock() 或
    lock.tryLock(long leaseTime, TimeUnit unit)
    方法获取锁时,并且锁的租用时间(leaseTime)设置为 -1(即无限期),Redisson
    的看门狗机制会自动启动。看门狗会定期检查这个锁是否仍然被当前线程持有,如果持有,就会自动为这个锁续期。

  5. 如果你使用的是带有固定租用时间的 lock.tryLock(long leaseTime, TimeUnit unit)
    方法,看门狗机制不会自动续期。在这种情况下,锁会在指定的租用时间后自动释放,看门狗机制不会介入。

所以,看门狗机制是自动的,但它的续期行为取决于你获取锁的方式和锁的租用时间设置。


http://www.ppmy.cn/ops/159816.html

相关文章

Pycharm中通过Anaconda虚拟环境创建项目

一、确保已经安装了pycharm和anaconda,其中anaconda有命令行和图形化界面两个版本。 本篇使用Anacoda Navigator即图形化界面 二、Anaconda先创建环境Pycharm使用已有环境变量 左下角点击create 随便起个名字 选中一个环境,搜索pytorch,没有…

本地部署【LLM-deepseek】大模型 ollama+deepseek/conda(python)+openwebui/docker+openwebui

通过ollama本地部署deepseek 总共两步 1.模型部署 2.[web页面] 参考官网 ollama:模型部署 https://ollama.com/ open-webui:web页面 https://github.com/open-webui/open-webui 设备参考 Mac M 芯片 windows未知 蒸馏模型版本:deepseek-r1:14b 运行情况macminim2 24256 本地…

Spring Boot(七):Swagger 接口文档

1. Swagger 简介 1.1 Swagger 是什么? Swagger 是一款 RESTful 风格的接口文档在线自动生成 功能测试功能软件。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。目标是使客户端和文件系统作为服务器以同样的…

Python----PyQt开发(PyQt高级:手搓一个音乐播放器)

一、效果展示 二、设计PyQt界面 本次ui界面设置用到了水平和垂直布局 2.1、设置ui窗口显示大小与位置 self.setWindowTitle(音乐播放器) # 设置窗口标题self.setGeometry(800, 300, 800, 800) # 设置窗口大小和位置 2.2、创建显示歌曲列表控件 # 创建显示歌曲列表的控件 …

电动汽车电池监测平台系统设计(论文+源码+图纸)

1总体设计 本次基于单片机的电池监测平台系统设计,其整个系统架构如图2.1所示,其采用STC89C52单片机作为控制器,结合ACS712电流传感器、TLC1543模数转换器、LCD液晶、DS18B20温度传感器构成整个系统,在功能上可以实现电压、电流、…

VAS1260IB05E 集成内部开关驱动器的汽车级LED硬灯带高效解决方案

VAS1260IB05E LED芯片是一种连续模式电感降压转换器,设计用于从高于LED电压的电压源高效驱动单个或多个串联连接的LED。该设备在5V至60V之间的输入电源下工作,并提供高达1.2A的外部可调输出电流。包括输出开关和高侧输出电流感测电路,该电路使…

深入解析 Flutter GetX

深入解析 Flutter GetX:从原理到实战 GetX 是 Flutter 中一个轻量级且功能强大的状态管理、路由管理和依赖注入框架。它以简单、快速、高效著称,适合从小型到大型项目的开发需求。GetX 的设计理念是一体化解决方案,通过一个框架解决状态管理…

宏基传奇swift edge偶尔开机BIOS重置

电脑是acer swift edge, SFA16-41,出厂是Win11系统, BIOS版本出厂1.04,更新到了目前最新1.10。 问题是 会偶尔开机ACER图标变小跑到屏幕左上方,下次开机BIOS就会被重置,开机等待很长时间。 因为是偶尔现象的…