ReentrantLock 的典型使用场景和实现方法

news/2025/11/28 13:59:48/文章来源:https://www.cnblogs.com/yppah/p/19282263

基本概念

ReentrantLock 是 Java 幑发包中提供的可重入互斥锁,相比 synchronized 关键字提供了更高的灵活性和功能。

典型使用场景

1. 防止重复提交

防止用户重复点击按钮导致的重复业务处理。

2. 缓存双检锁机制

在缓存失效时,防止多个线程同时重建缓存。

3. 资源竞争控制

对共享资源的访问进行精确控制。

4. 定时任务并发控制

确保同一时刻只有一个定时任务实例运行。

实现方法

方法一:在 Service 层直接使用

@Service
public class BusinessService {private final ReentrantLock lock = new ReentrantLock();public void processBusinessLogic(String key) {lock.lock();try {// 执行核心业务逻辑doSomething(key);} finally {lock.unlock();}}private void doSomething(String key) {// 具体业务实现}
}

方法二:使用静态 Map 管理多个锁

@Service
public class MultiKeyService {private static final Map<String, ReentrantLock> lockMap = new ConcurrentHashMap<>();public void processByKey(String key) {ReentrantLock lock = lockMap.computeIfAbsent(key, k -> new ReentrantLock());lock.lock();try {// 处理特定 key 的业务逻辑handleBusiness(key);} finally {lock.unlock();}}private void handleBusiness(String key) {// 具体业务实现}
}

方法三:封装为工具类使用

@Component
public class LockUtil {private static final Map<String, ReentrantLock> lockMap = new ConcurrentHashMap<>();public <T> T executeWithLock(String key, Supplier<T> supplier) {ReentrantLock lock = lockMap.computeIfAbsent(key, k -> new ReentrantLock());lock.lock();try {return supplier.get();} finally {lock.unlock();}}public void executeWithLock(String key, Runnable runnable) {ReentrantLock lock = lockMap.computeIfAbsent(key, k -> new ReentrantLock());lock.lock();try {runnable.run();} finally {lock.unlock();}}
}// 使用示例
@Service
public class BusinessService {@Autowiredprivate LockUtil lockUtil;public void processData(String key) {lockUtil.executeWithLock(key, () -> {// 执行业务逻辑doProcess(key);});}
}

方法四:使用 tryLock 避免阻塞

@Service
public class TimeoutControlService {private final ReentrantLock lock = new ReentrantLock();public boolean processWithTimeout() {try {if (lock.tryLock(3, TimeUnit.SECONDS)) {try {// 执行业务逻辑doProcess();return true;} finally {lock.unlock();}}} catch (InterruptedException e) {Thread.currentThread().interrupt();}return false;}private void doProcess() {// 具体业务实现}
}

在 Spring Bean 中的注意事项

1. 锁的作用域

@Service
public class SingletonService {// 实例变量 - 同一个锁对象private final ReentrantLock lock = new ReentrantLock();// 每次调用创建新锁 - 锁失效// private ReentrantLock getLock() { return new ReentrantLock(); }
}

2. 异常处理

@Service
public class ExceptionSafeService {private final ReentrantLock lock = new ReentrantLock();public void safeProcess() {lock.lock();try {// 业务逻辑可能会抛出异常riskyOperation();} finally {// 必须在 finally 中释放锁lock.unlock();}}
}

与 @Transactional 结合使用的注意事项

@Service
public class TransactionalLockService {private final ReentrantLock lock = new ReentrantLock();// 推荐:先加锁后开启事务public void correctWay() {lock.lock();try {transactionalMethod();} finally {lock.unlock();}}@Transactionalpublic void transactionalMethod() {// 数据库操作}
}

最佳实践总结

  1. 锁的粒度:根据业务需求合理设计锁的粒度
  2. 异常安全:始终在 finally 块中释放锁
  3. 避免死锁:统一加锁顺序,避免嵌套锁
  4. 性能考虑:对于竞争不激烈的场景,synchronized 可能更合适
  5. 监控告警:添加锁等待时间监控,及时发现性能瓶颈

ReentrantLock 在 Spring Boot 中主要用于需要更细粒度控制并发访问的场景,相比 synchronized 提供了更多的功能和灵活性。

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

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

相关文章

2025 年 11 月制造业降本增效咨询公司权威推荐榜:精益生产与成本优化专家团队深度解析及服务优势全景解析

2025年11月制造业降本增效咨询公司权威推荐榜:精益生产与成本优化专家团队深度解析及服务优势全景解析 引言:制造业降本增效的时代背景 在全球制造业竞争日趋激烈的今天,降本增效已成为制造企业生存与发展的核心命题…

无源探头与高压探头技术对比分析

本文对比分析了无源探头与高压探头的技术原理、性能参数及应用场景,为选择合适探头提供参考。在电子测量领域,示波器探头作为连接被测电路与测量仪器的桥梁,其性能直接影响测量结果的准确性。其中,无源探头和高压探…

数字马力笔试

选择题七八十道的样子,包含 AI、Java 面向对象、数据库等。 编程题五道: 一五是算法,第一题是模拟,给你个身份证,问最后一位和前面 \(9\) 位算出的一个结果是否匹配,我记得好像是牛客上的原题。 第五题是给你两个…

2025年上海离婚诉讼律师推荐排行榜,哪个好?哪个靠谱?选哪个?

在上海提起离婚诉讼,选对“上海离婚诉讼律师”基本等于赢了一半:不仅关系到能不能顺利离掉,还关系到房子、存款、股权、孩子抚养权这些“人生核心资源”怎么分配。 网上各种“排行榜”“十大离婚律师”里,广告、水…

直击提分痛点!2025年11月贝赛思考试培训核心机构深度评测,封闭班首选推荐

直击提分痛点!2025年11月贝赛思考试培训核心机构深度评测,封闭班首选推荐备考贝赛思考试时,面对市场上良莠不齐的培训机构,不少家长和学员都陷入选择困境。2025年贝赛思考试难度再升级,MAP阅读题量翻倍至40题,数…

2025留学中介南京哪家好

2025留学中介南京哪家好一、南京留学中介如何选?五大疑问帮你理清思路作为从事国际教育规划工作超过十年的专业人士,我经常被南京的学生和家长问及留学中介的选择问题。2025年10月24日,随着留学申请季的临近,许多准…

2025 年 11 月管理咨询公司权威推荐榜:战略规划与组织优化口碑优选,专业服务助力企业高效成长

2025 年 11 月管理咨询公司权威推荐榜:战略规划与组织优化口碑优选,专业服务助力企业高效成长 在当今复杂多变的商业环境中,企业面临着前所未有的战略挑战和组织优化需求。管理咨询行业作为企业转型升级的重要推手,…

Postman接口测试教程(完整版) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

开源项目观察8月报

前言 总结8月份自己关注的一些项目/语言的新版本 本文公众号地址 大数据 hue 1月19: 4.11 https://docs.gethue.com/releases/release-notes-4.11.0/支持 iceberg 数据源通过缓存 Livy session 中的信息来加速 SparkSQ…

jetson/ubuntu22.04系统安装ROS2

lsb_release -a查询系统版本号

2025年上海离婚谈判律师推荐排行榜,哪个好?哪个靠谱?选哪个?

在上海,越来越多准备离婚的夫妻,选择先谈一谈、再决定要不要打官司。这一阶段,找一位专业的上海离婚谈判律师,往往能决定你最后是“体面分手”,还是“撕裂收场”。 这篇文章就从三个问题出发——哪个好?哪个靠谱…

2025年双梁龙门吊厂家权威推荐榜单:10吨龙门吊‌/港口龙门吊‌/门式起重机源头厂家精选

在工业现代化与物流效率提升的双重推动下,双梁龙门吊作为重要的起重设备,其市场需求持续增长。行业数据显示,2025年中国龙门吊市场规模预计突破180亿元,年均增长率稳定在8%-10%。双梁龙门吊凭借其结构稳定、起重能…

为你的STM32毕设项目加点料:AI智能风扇智能温控与风扇调节系统

每年的这个时候,总能看到许多为毕业设计而发愁的同学。大家手里握着熟悉的STM32,知道它性能强大、控制精准,是完成毕设的可靠伙伴,但恰恰因为这份“可靠”,反而让选题变得困难——能做的东西似乎都被人做过了,怎…

ReentrantReadWriteLock的使用方法和使用场景

基本概念 ReentrantReadWriteLock 是 Java 并发包中的一个可重入读写锁实现,它将锁分为读锁和写锁两种:读锁:共享锁,允许多个线程同时获取读锁进行读操作 写锁:独占锁,同一时间只能有一个线程获取写锁进行写操作…

2025 年 11 月中国十大咨询公司权威推荐榜:战略咨询,管理咨询,财务咨询,人力资源咨询,品牌咨询,专业实力与行业口碑深度解析

2025 年 11 月中国十大咨询公司权威推荐榜:战略咨询,管理咨询,财务咨询,人力资源咨询,品牌咨询,专业实力与行业口碑深度解析 在全球经济格局深刻变革的背景下,中国咨询行业正迎来前所未有的发展机遇。随着数字化…

2025年公路液压打桩机供货厂家权威推荐榜单:高速护栏立柱打桩机/马路护栏打桩机/道路打桩机源头厂家精选

在公路桥梁与基础设施建设领域,液压打桩机作为关键施工设备,其性能优劣直接影响到工程进度与施工质量。随着我国交通路网持续加密与升级,高效、环保、智能化的液压打桩设备市场需求持续增长。为帮助施工企业与采购单…

2025年重庆环境好的西点烘焙学校排行榜,设备先进口碑好的机

对于想要学习西点烘焙的新手或转型者而言,选择一所环境好、设备先进、口碑佳的学校,是技能高效提升的关键。但市场上机构鱼龙混杂,不少人因踩坑耽误时间与金钱。为此,我们从教学环境、设备配置、口碑评价、课程体系…

2025年上海婚姻律所推荐排行榜,哪家好?哪家靠谱?选哪家?

在上海,想找一家真正靠谱的“上海婚姻律所”,很多人第一反应就是:到底选谁?按什么标准选?网上“排行榜”一堆,看得眼花缭乱。 婚姻、离婚、房产、子女抚养、继承,这些问题几乎都会直接影响你接下来十几年甚至一…

2025年北京离婚诉讼律师推荐排行榜,哪个好?哪个靠谱?选哪个?

在北京准备起诉离婚,“找哪个离婚诉讼律师更靠谱”,往往比“离不离”本身还让人头大。 2025年,北京婚姻家事专业化已经很细分:有的律师主攻财产分割,有的更擅长子女抚养,有的专门做高净值、股权类案件。 这篇“排…

抗皱好的护护肤品年度更新:深纹改善率成为决定排名的关键指标

2025年抗皱护肤行业的评价体系正在重新建构。以往消费者关注的是“纹路有没有变浅”,而今年皮肤科强调的关键指标已转向:深纹改善率(Deep Wrinkle Reduction Rate)真皮层结构稳定性(Dermal Structural Integrity)…