【锁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:00:58 阅读更多 →
STM32 FSMC驱动SSD1963 LCD:8080时序硬件解析与实战

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

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

2026/8/1 14:00:58 阅读更多 →
Slidev终极指南:让技术演示告别枯燥的开发者利器

Slidev终极指南:让技术演示告别枯燥的开发者利器

Slidev终极指南:让技术演示告别枯燥的开发者利器 【免费下载链接】slidev Presentation Slides for Developers 项目地址: https://gitcode.com/GitHub_Trending/sl/slidev 还在为技术演示而烦恼吗?每次分享代码时,要么在PPT中截图导致…

2026/8/1 13:59:55 阅读更多 →

最新新闻

资本、智力、技能与人力劳动的价值排序解析

资本、智力、技能与人力劳动的价值排序解析

1. 资本、智力、技能与人力劳动的价值排序解析 "资本>智力(ideas)>技能>人力劳动"这个价值排序公式,最近在创业圈和职场讨论中频繁出现。作为一个经历过从打工者到创业者身份转变的过来人&#x…

2026/8/1 14:42:16 阅读更多 →
铣削组合机床设计与传动系统优化指南

铣削组合机床设计与传动系统优化指南

1. 铣削组合机床概述 铣削组合机床是一种高度专业化的金属切削设备,它通过将多个铣削单元集成在同一机床上,实现对工件的多面、多工序同步加工。这种设计理念最早起源于20世纪50年代的汽车制造业,当时为了满足大批量生产的需求,工…

2026/8/1 14:42:16 阅读更多 →
电商手持吸尘器图片怎么批量做?从素材整理到详情页导出的流程

电商手持吸尘器图片怎么批量做?从素材整理到详情页导出的流程

手持吸尘器上新时,主图要让机身、吸头和配件看清,场景图要说明沙发、车内或桌面的使用关系,详情页还要拆开续航、配件与收纳方式。如果每个页面临时换图、换模板,容易出现同一产品外观不一致、配件缺失或信息区不够的问题。Lingko…

2026/8/1 14:42:16 阅读更多 →
《枚举算法 “翻译官”:用 enum class 给 “游游的礼盒” 算分》

《枚举算法 “翻译官”:用 enum class 给 “游游的礼盒” 算分》

在算法题中,“枚举所有可能” 是一种直观且有效的解题思路,但直接用数字表示状态或选项时,代码往往显得晦涩难懂。比如 “游游的礼盒” 这类问题,需要枚举礼盒中不同物品的组合并计算最大值,若用0、1、2代表物品&#…

2026/8/1 14:42:16 阅读更多 →
DIY 7英寸副屏:低成本扩展桌面空间,打造专属信息看板

DIY 7英寸副屏:低成本扩展桌面空间,打造专属信息看板

1. 项目缘起:为什么需要一个“副屏”?作为一名长期与代码、设计稿和多个文档窗口打交道的开发者,我几乎每天都在和屏幕空间不足作斗争。主显示器上,IDE、浏览器、终端、通讯软件、设计工具挤作一团,频繁的窗口切换不仅…

2026/8/1 14:42:16 阅读更多 →
ModTheSpire终极指南:5分钟为《杀戮尖塔》开启无限模组世界

ModTheSpire终极指南:5分钟为《杀戮尖塔》开启无限模组世界

ModTheSpire终极指南:5分钟为《杀戮尖塔》开启无限模组世界 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire 你是否厌倦了《杀戮尖塔》一成不变的玩法?想添加新角…

2026/8/1 14:41:12 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

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

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

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