【锁3】Semaphore(信号量)

发布时间:2026/9/20 4:47:13

【锁3】Semaphore(信号量) Semaphore信号量的核心是用 N 张“许可证”限制同时访问资源的线程数——线程进来先 acquire() 拿一张用完 release() 还回去许可证发完了后面的线程就得排队。下面给你 Java 最常用版本的可运行示例。核心概念初始化时指定许可证数量 N相当于“最多允许 N 个线程同时进临界区”acquire()拿许可证没有就阻塞等待release()还许可证务必放在finally或使用with否则忘了释放就会死锁tryAcquire()非阻塞版本拿不到立刻返回false适合做限流降级importjava.util.concurrent.Semaphore;publicclassSemaphoreDemo{// 许可证数量为 3即同时最多 3 个线程能进临界区privatestaticfinalSemaphoresemaphorenewSemaphore(3);publicstaticvoidmain(String[]args){for(inti1;i5;i){newThread(newTask(线程-i)).start();}}staticclassTaskimplementsRunnable{privatefinalStringname;Task(Stringname){this.namename;}Overridepublicvoidrun(){try{semaphore.acquire();// 拿许可证没有就阻塞System.out.println(name 进入临界区当前可用许可证: semaphore.availablePermits());Thread.sleep(2000);// 模拟业务耗时System.out.println(name 执行完毕);}catch(InterruptedExceptione){e.printStackTrace();}finally{semaphore.release();// 一定要释放System.out.println(name 释放许可证);}}}}运行后会看到前 3 个线程同时进入后 2 个等前面有人释放后才依次进入。线程-1 进入临界区当前可用许可证:2线程-4 进入临界区当前可用许可证:0线程-3 进入临界区当前可用许可证:1线程-1 执行完毕 线程-4 执行完毕 线程-3 执行完毕 线程-4 释放许可证 线程-3 释放许可证 线程-1 释放许可证 线程-5 进入临界区当前可用许可证:1线程-2 进入临界区当前可用许可证:2线程-5 执行完毕 线程-5 释放许可证 线程-2 执行完毕 线程-2 释放许可证 进程已结束退出代码为0 典型应用场景对比场景许可证数量说明数据库连接池连接数上限例如设置 10防止连接耗尽API 接口限流QPS 上限例如设置 50保护后端服务爬虫并发控制目标站承受力避免请求过快被封 IP互斥锁Mutex*1等同于Lock实现线程独占⚠️ 注意事项死锁风险如果acquire()后未调用release()如异常中断会导致永久阻塞。公平性Java 构造器new Semaphore(3, true)可设置为公平模式FIFO但会降低性能。Asyncio 作用域asyncio.Semaphore必须在async def函数内创建不能在模块顶层创建会报 Event Loop 错误。
延伸阅读

更多相关文章

2026/9/19 23:44:32

MiniMax H3 深度解析:打破模态界限,全能多模态模型优势在哪

今天,正式发布 MiniMax H3。这是一款通用的全模态生成模型,支持对文本、图像、视频、声音组成的多模态上下文的统一理解能力、能够输出具备原生双声道的音视频,最高可支持 15s 2K 分辨率。 MiniMax H3 具备商用级的多场景内容生成能力&#x…

2026/9/20 4:47:16

STM32 FSMC驱动SSD1963 LCD:8080时序硬件解析与实战

1. 项目概述:从时序图到点亮屏幕的完整旅程 搞嵌入式显示的朋友,对SSD1963这颗经典的LCD驱动芯片应该不陌生。它支持高达864x480的分辨率、24位真彩色,还能直接挂载SDRAM作为显存,在当年算是相当强悍的“显卡”了。但它的8080并行…

2026/9/20 15:56:10

BetterJoy 7.0深度解析:Switch手柄PC化协议转换原理与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 15:56:10

Workbench 19.0结构声学仿真:从振动到噪声的完整指南

简介:面向从事结构声学仿真分析的工程师和技术人员,这份PDF系统介绍Ansys Workbench 19.0在模态声学与谐响应声学分析中的核心功能,涵盖噪声模拟应用场景、多孔介质材料属性设置、声学边界条件及完全耦合分析方法,并结合汽车降噪、…

2026/9/20 15:56:10

Monorepo下Stylelint样式检查配置实战与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 15:56:10

LLVM项目深度解析:从源码结构到编译优化实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 15:51:08

基于时空风险场的自动驾驶预测轨迹规划方法

简介:这是一份面向自动驾驶科研人员与算法工程师的英文PDF论文,聚焦动态道路环境下的车辆轨迹规划难题。研究提出基于时空风险势场的混合规划方法,通过并行处理候选轨迹生成与风险评估,结合交互多模型预测周围车辆车道概率&#x…

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/20 5:01:23

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/20 5:09:33

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码