【锁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 错误。

相关新闻

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

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

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

2026/8/1 14:01:00阅读更多 →
STM32 FSMC驱动SSD1963 LCD:8080时序硬件解析与实战

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

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

2026/8/1 14:01:00阅读更多 →
【AI版本兼容性检测黄金法则】:20年架构师亲授5大避坑指南,90%团队都忽略了第3步?

【AI版本兼容性检测黄金法则】:20年架构师亲授5大避坑指南,90%团队都忽略了第3步?

更多请点击: https://codechina.net 第一章:AI版本兼容性检测的底层逻辑与核心挑战 AI版本兼容性检测并非简单的API签名比对,而是横跨模型架构、算子语义、运行时依赖与量化规范的多维一致性验证。其底层逻辑建立在三个锚点之上&#xff1a…

2026/8/1 13:58:58阅读更多 →
英雄联盟自动化助手:3分钟上手的游戏智能伴侣

英雄联盟自动化助手:3分钟上手的游戏智能伴侣

英雄联盟自动化助手:3分钟上手的游戏智能伴侣 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否厌倦了在英雄联盟对局中反复配…

2026/8/1 20:06:45阅读更多 →
如何合法合规地使用视频下载工具:从DownKyi案例看开源项目法律边界

如何合法合规地使用视频下载工具:从DownKyi案例看开源项目法律边界

如何合法合规地使用视频下载工具:从DownKyi案例看开源项目法律边界 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去…

2026/8/1 20:06:45阅读更多 →
开发者必看:Flask-Security核心组件解析与自定义配置技巧

开发者必看:Flask-Security核心组件解析与自定义配置技巧

开发者必看:Flask-Security核心组件解析与自定义配置技巧 【免费下载链接】flask-security Quick and simple security for Flask applications 项目地址: https://gitcode.com/gh_mirrors/fla/flask-security Flask-Security是一款为Flask应用提供快速且简单…

2026/8/1 20:06:45阅读更多 →
终极指南:如何用QuickRecorder轻松搞定macOS屏幕录制

终极指南:如何用QuickRecorder轻松搞定macOS屏幕录制

终极指南:如何用QuickRecorder轻松搞定macOS屏幕录制 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https://gitcode.com/GitHub_Tren…

2026/8/1 20:06:45阅读更多 →
企业微信协议怎么接入?从环境准备到第一条消息的联调步骤

企业微信协议怎么接入?从环境准备到第一条消息的联调步骤

适合准备做企微客服、SCRM、聚合会话的后端同学。按可执行清单写,接口名以你方实际文档为准。写在前面对接协议能力时,最容易犯的错是:对着接口列表东点西点,登录态、回调、业务调用顺序乱了,排障成本很高。更稳的做法…

2026/8/1 20:06:45阅读更多 →
Pure CSS Components高级技巧:Dropdown与Tooltip交互设计指南

Pure CSS Components高级技巧:Dropdown与Tooltip交互设计指南

Pure CSS Components高级技巧:Dropdown与Tooltip交互设计指南 【免费下载链接】css-components :coffee: A set of common UI Components using just the power of CSS and without JavaScript. 项目地址: https://gitcode.com/gh_mirrors/cs/css-components …

2026/8/1 20:04:45阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →