【鎖3】Semaphore(信號量)
Semaphore信號量的核心是用 N 張“許可證”限制同時訪問資源的線程數(shù)——線程進(jìn)來先 acquire() 拿一張用完 release() 還回去許可證發(fā)完了后面的線程就得排隊。下面給你 Java 最常用版本的可運(yùn)行示例。核心概念初始化時指定許可證數(shù)量 N相當(dāng)于“最多允許 N 個線程同時進(jìn)臨界區(qū)”acquire()拿許可證沒有就阻塞等待release()還許可證務(wù)必放在finally或使用with否則忘了釋放就會死鎖tryAcquire()非阻塞版本拿不到立刻返回false適合做限流降級importjava.util.concurrent.Semaphore;publicclassSemaphoreDemo{// 許可證數(shù)量為 3即同時最多 3 個線程能進(jìn)臨界區(qū)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 進(jìn)入臨界區(qū)當(dāng)前可用許可證: semaphore.availablePermits());Thread.sleep(2000);// 模擬業(yè)務(wù)耗時System.out.println(name 執(zhí)行完畢);}catch(InterruptedExceptione){e.printStackTrace();}finally{semaphore.release();// 一定要釋放System.out.println(name 釋放許可證);}}}}運(yùn)行后會看到前 3 個線程同時進(jìn)入后 2 個等前面有人釋放后才依次進(jìn)入。線程-1 進(jìn)入臨界區(qū)當(dāng)前可用許可證:2線程-4 進(jìn)入臨界區(qū)當(dāng)前可用許可證:0線程-3 進(jìn)入臨界區(qū)當(dāng)前可用許可證:1線程-1 執(zhí)行完畢 線程-4 執(zhí)行完畢 線程-3 執(zhí)行完畢 線程-4 釋放許可證 線程-3 釋放許可證 線程-1 釋放許可證 線程-5 進(jìn)入臨界區(qū)當(dāng)前可用許可證:1線程-2 進(jìn)入臨界區(qū)當(dāng)前可用許可證:2線程-5 執(zhí)行完畢 線程-5 釋放許可證 線程-2 執(zhí)行完畢 線程-2 釋放許可證 進(jìn)程已結(jié)束退出代碼為0 典型應(yīng)用場景對比場景許可證數(shù)量說明數(shù)據(jù)庫連接池連接數(shù)上限例如設(shè)置 10防止連接耗盡API 接口限流QPS 上限例如設(shè)置 50保護(hù)后端服務(wù)爬蟲并發(fā)控制目標(biāo)站承受力避免請求過快被封 IP互斥鎖Mutex*1等同于Lock實現(xiàn)線程獨(dú)占?? 注意事項死鎖風(fēng)險如果acquire()后未調(diào)用release()如異常中斷會導(dǎo)致永久阻塞。公平性Java 構(gòu)造器new Semaphore(3, true)可設(shè)置為公平模式FIFO但會降低性能。Asyncio 作用域asyncio.Semaphore必須在async def函數(shù)內(nèi)創(chuàng)建不能在模塊頂層創(chuàng)建會報 Event Loop 錯誤。

相關(guān)新聞

MiniMax H3 深度解析:打破模態(tài)界限,全能多模態(tài)模型優(yōu)勢在哪

MiniMax H3 深度解析:打破模態(tài)界限,全能多模態(tài)模型優(yōu)勢在哪

今天,正式發(fā)布 MiniMax H3。這是一款通用的全模態(tài)生成模型,支持對文本、圖像、視頻、聲音組成的多模態(tài)上下文的統(tǒng)一理解能力、能夠輸出具備原生雙聲道的音視頻,最高可支持 15s 2K 分辨率。 MiniMax H3 具備商用級的多場景內(nèi)容生成能力&#x…

2026/8/1 14:01:08 閱讀更多
STM32 FSMC驅(qū)動SSD1963 LCD:8080時序硬件解析與實戰(zhàn)

STM32 FSMC驅(qū)動SSD1963 LCD:8080時序硬件解析與實戰(zhàn)

1. 項目概述:從時序圖到點亮屏幕的完整旅程 搞嵌入式顯示的朋友,對SSD1963這顆經(jīng)典的LCD驅(qū)動芯片應(yīng)該不陌生。它支持高達(dá)864x480的分辨率、24位真彩色,還能直接掛載SDRAM作為顯存,在當(dāng)年算是相當(dāng)強(qiáng)悍的“顯卡”了。但它的8080并行…

2026/8/1 14:01:08 閱讀更多
2026最新!糾正孩子發(fā)音的3款實用英語聽說軟件

2026最新!糾正孩子發(fā)音的3款實用英語聽說軟件

【摘要:】 本文結(jié)合我5年英語聽說教學(xué)和工具測評經(jīng)驗,拆解當(dāng)前少兒英語發(fā)音糾正的核心痛點,對比3款主流工具的技術(shù)邏輯和實測效果,給出中立選型參考,所有數(shù)據(jù)均來自實測和公開技術(shù)白皮書,無軟廣。 我當(dāng)初20…

2026/8/1 14:01:08 閱讀更多
5分鐘解鎖Burp Suite中文界面:安全測試新手的終極指南

5分鐘解鎖Burp Suite中文界面:安全測試新手的終極指南

5分鐘解鎖Burp Suite中文界面:安全測試新手的終極指南 【免費(fèi)下載鏈接】BurpSuiteCN-Release BurpSuite漢化發(fā)布 項目地址: https://gitcode.com/gh_mirrors/bu/BurpSuiteCN-Release 作為一名網(wǎng)絡(luò)安全新手,你是否曾經(jīng)面對Burp Suite那密密麻麻的…

2026/8/1 15:01:40 閱讀更多
操作系統(tǒng)核心概念與高頻考點解析:從進(jìn)程管理到虛擬內(nèi)存

操作系統(tǒng)核心概念與高頻考點解析:從進(jìn)程管理到虛擬內(nèi)存

1. 項目概述:一份能救命的期末復(fù)習(xí)“彈藥庫”又到期末了,是不是感覺操作系統(tǒng)的概念像一團(tuán)亂麻,進(jìn)程、線程、死鎖、內(nèi)存管理……每個詞都認(rèn)識,但合在一起就不知道從何背起?特別是簡答題,書上內(nèi)容浩如煙海&am…

2026/8/1 15:01:40 閱讀更多
二維離散點曲率計算:從原理到工程實踐

二維離散點曲率計算:從原理到工程實踐

1. 項目概述:從離散點陣中“看見”彎曲 在數(shù)據(jù)分析和工程應(yīng)用的很多場景里,我們拿到手的不是一條光滑的數(shù)學(xué)曲線,而是一串離散的、由儀器采樣或程序生成的點坐標(biāo)。比如,你用激光掃描儀獲取了一個零件輪廓的點云,或者從…

2026/8/1 15:01:40 閱讀更多
洛雪音樂音源配置終極指南:快速解鎖全網(wǎng)音樂資源

洛雪音樂音源配置終極指南:快速解鎖全網(wǎng)音樂資源

洛雪音樂音源配置終極指南:快速解鎖全網(wǎng)音樂資源 【免費(fèi)下載鏈接】lxmusic- lxmusic(洛雪音樂)全網(wǎng)最新最全音源 項目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 想要在洛雪音樂中暢聽全網(wǎng)音樂嗎?音源配置是關(guān)鍵!本指南將帶你…

2026/8/1 15:01:40 閱讀更多
Bifrost:三星固件下載的終極免費(fèi)解決方案

Bifrost:三星固件下載的終極免費(fèi)解決方案

Bifrost:三星固件下載的終極免費(fèi)解決方案 【免費(fèi)下載鏈接】Bifrost Cross-platform tool for downloading Samsung mobile device firmware. 項目地址: https://gitcode.com/gh_mirrors/sa/Bifrost 在三星設(shè)備用戶的世界里,獲取官方固件一直是個技…

2026/8/1 15:01:40 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動化設(shè)備及通用機(jī)械驅(qū)動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機(jī)。額定…

2026/8/1 0:09:33 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動化設(shè)備及通用機(jī)械驅(qū)動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機(jī)。額定…

2026/8/1 0:09:33 閱讀更多