Redisson - tryLock 函数参数分析

news2024/11/24 19:17:33

这里有三个参数:

  1. waitTime:等待时间
  2. leaseTime:超时施放时间
  3. TimeUnit:时间单位

等待时间

如果 ABC… 多个线程去抢夺一把锁,A 成功了,如果设置的是 -1,那么 BCD... 就不等待,直接返回失败,也就是不再去抢夺锁了,一次失败,直接放弃。

如果不是 -1,假如说是 10(单位是秒)那么 BCD… 失败后会择机再次去抢夺,这里的择机抢夺,就代表着不是与 A 抢夺失败后的立马再次抢夺,因为(明知道 A 抢过锁之后会执行自己的业务,需要一定的时间,那么 BCD... 立马再去抢夺锁的意义在哪里呢? 除了徒增 CPU 的负担,没有太大意义)所以这里的择机抢夺,其实是利用了 发布 - 订阅机制。

从上面的图片可以看到,A 抢过锁之后,执行业务,结束之后释放锁,释放锁的时候还 publish (发布)了一个信号,而有人发布,就有人订阅,发布人是 A,订阅人是 BCD… 所以说这里的择机再次抢夺是在 BCD… 接收到 A 发布的消息之后再去抢夺。

当然了,从第一次与 A 抢夺失败,到等待 A 完成业务发布消息这段等待时间 + 第一次和 A 抢夺锁的时间 总数不能超过 10s,毕竟 10s 就是硬性规定,10s 之内,不论发生多么复杂的逻辑,只要拿到锁就行,不行就直接放弃。

超时施放时间

就是说 A 拿到了锁之后, 如果发生了一些异常错误,内部业务没能正常的执行,没能正常执行释放锁的操作,这个时候 这个超时施放时间才会起作用,也就是说,在 A 抢到锁之后,即便 A 的业务出现了堵塞,但是只要没发生一些异常情况,这里的超时施放时间是不起作用的,因为只要不发生异常,内部就会有一个 看门狗,每隔超时施放时间/3就会刷新一次锁的过期时间(是一个定时任务),确保 A 能够执行完成业务,当然,A 执行完业务后,会删除刷新有效期的定时任务。所以说,超时释放时间在正常执行业务的时候,是不发挥作用的,只在出现异常的时候才会起作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1626198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MYSQL45道练习题---持续更新中

来源: Mysql_45道练习题 - 简书 共四张表: ①、course表: CId:课程id Cname:课程名称 TId:老师id ②、student学生表: SId:学生id Sname:…

淘宝店铺商品信息抓取

一、背景 为了更好了解同行或竞争对手的情况,基于对行业数据分析、市场研究、竞争情报收集等方面的需求。一些公司或个人可能希望获取淘宝店铺的商品数据,以便进行以下操作: 市场研究和竞争分析:通过分析淘宝店铺的商品数据&…

Qt [获取Dump] 使用WindowsAPI实现生成MiniDump文件

说明 客户现场的软件偶发崩溃是程序开发者,比较头疼的事情。如何更快速的定位到问题点和解决掉,是开发应该具备的基本能力。 Windows提供了一系列的API,可以记录软件崩溃前的堆栈信息。下面就实现一个生成Dump文件的程序实例。 主要代码 回…

Linux之线程管理

目录 第1关:创建线程 任务描述 相关知识 使用pthread_create函数创建线程 编程要求 答案: 第2关:线程挂起 任务描述 相关知识 使用pthread_join挂起线程 编程要求 答案: 第3关:线程终止 任务描述 相关知识 使用pthread…

意法半导体STM32F407VET6TR单片机优缺点、参数、应用和引脚封装

ST(意法半导体)的型号STM32F407VET6TR属于32位MCU微控制器,基于高性能的ArmCortex-M4 32位RISC核心,工作频率高达168MHz。单精度浮点单元(FPU)用于Cortex-M4核心,支持所有Arm单精度数据处理指令和数据类型。它还实现了一套完整的DSP指令和一个…

走进中财:创邻科技图技术赋能金融高质量发展路演圆满完成!

4月20日下午,由中财MBA金融科技研究会主办的“走进中财”主题活动在中央财经大学商学院的A28教室如期举行。中央财经大学商学院党委副书记杨中英、中财MBA金融科技研究会发起人代表贾晓强、中央财经大学商学院教授王毅等受邀参与本次大会。 创邻科技CEO兼创始人张晨…

python 实现用户登录

1. JWT Token 参考:https://www.zhihu.com/question/364616467 jwt官网:https://jwt.io/#debugger-io 1.1. Token Token 是一个宽泛的术语,它可以指代任何一种用于身份验证的机制。Token 常常被用在验证和授权流程中。Token 可以有不同的形…

标准版/开源版 移动端新增页面使用文档

在标准版开发的实际使用中,随着用户移动端的产品和信息内容不断增多,新增页面来展示对应的产品详情、模块等内容。针对一些概念或者步骤较多的内容,可以新增子页面构建多级模块结构,帮助用户快速定位。 下面就如何新增页面做一讲…

Linux中手工创建一个用户

当我们需要新创建一个用户时,有两种方法 1.使用命令添加用户 2.去配置文件里面添加用户 1,使用useradd命令: [rootlocalhost /]# useradd tmg 然后给它设置一个密码 [rootlocalhost etc]# passwd tmg Changing password for user tmg. N…

janus模块介绍-SIP Gateway

模块启动 默认的SIP GateWay也是https协议,端口为8088或者8089 如果需要在自己搭建的测试服务上测试SIP GateWay模块,则也需要修改为wss 具体改动如下: 找到/opt/janus/share/janus/demos/siptest.js var server "wss://" window.location…

Python基础知识—运算符和if语句(二)

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》 《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 1.输入和输出函数1.1输出函数1.2输入函数 2.常见运算符2.1赋值运算符2.2比较运算符2.3逻辑运算符2.4and逻辑与2.5or逻辑或2.6not逻…

前端JS必用工具【js-tool-big-box】,防抖和节流的方法调用学习

这一小节,我们针对前端工具包(npm)js-tool-big-box的使用做一些讲解,主要是防抖和节流方面的。 目录 前言 1 安装和引入 2 防抖的调用学习 3 节流的调用学习 4 使用方法总结 前言 在前端项目中,经常涉及到防抖…

漏斗分析方法

目录 1.什么是漏斗分析方法 2.基本概念 3.漏斗步骤的构建 4.漏斗分析的意义 5.漏斗分析的挑战和限制 6.进行漏斗分析的步骤与方法 7.在数据分析中应用漏斗分析的策略 8.示例 1.什么是漏斗分析方法 漏斗分析方法是数据分析中一种常见的技术,专门用于优化和提…

Python 网络与并发编程(四)

文章目录 协程Coroutines协程的核心(控制流的让出和恢复)协程和多线程比较协程的优点协程的缺点 asyncio实现协程(重点) 协程Coroutines 协程,全称是“协同程序”,用来实现任务协作。是一种在线程中,比线程更加轻量级的存在,由程…

走进电线电缆行业龙头金杯电工,助推湖南“智赋万企”行动热潮

湖南省政府推动的“智赋万企”行动掀起千行百业万企的数智化浪潮,在企业、服务商、行业协会等多方共推下,湖南省的数字化生态越发繁荣。 4月23日,纷享销客举办的【走进数字化游学示范基地之金杯电工】活动在长沙顺利举行。本期活动走进电线电…

ThingsBoard远程RPC调用设备

使用 RPC 功能 客户端 RPC 从设备发送客户端 RPC 平台处理客户端RPC 服务器端 RPC 服务器端RPC结构 发送服务器端RPC 使用 RPC 功能 ThingsBoard 允许您从服务器端应用程序向设备发送远程过程调用 (RPC),反之亦然。基本上,此功能允许您向设备发送命…

vue2项目升级到vue3经历分享1

依据vue官方文档,vue2在2023年12月31日终止维护。因此决定将原来的岁月云记账升级到vue3,预计工作量有点大,于是想着把过程记录下来。 原系统使用的技术栈 "dependencies": {"axios": "^0.21.1","babel-…

Qt配置CMake出错

一个项目需要在mingw环境下编译Opencv源码,当我用Qt配置opencv的CMakeLists.txt时,出现了以下配置错误: 首先我根据下述博文介绍,手动配置了CMake,但仍不能解决问题。 Qt(MinGW版本)安装 - 夕西行 - 博客园 (cnblogs.…

数之寻软件怎么样?

数之寻软件是一款功能强大的数据恢复和备份软件,以下是对其特点和功能的详细评价: 一、数据恢复方面: 高效的数据恢复能力:数之寻软件采用了先进的算法和数据恢复技术,能够快速有效地恢复丢失或损坏的数据。无论是文…

laravel视频对接aws

本次对接文件上传,目标是实现超级大文件的上传任务,可能就是4~5个g的视频文件,折腾了蛮久熟悉s3,因此记录一下。 大家要是对filesystem不清楚去看一下官方文档不然可能有点懵逼。 首先我先是对接了一个普通的s3存储文件的功能&a…