Java中的信號量Semaphore詳細(xì)解讀
Java中的信號量Semaphore
信號量機(jī)制可以用來保證線程互斥
創(chuàng)建Semaphore對象: 傳入一個整形參數(shù),類似于公共資源
常用方法:
- acquire();獲取一個公共資源,公共資源-1,如果公共資源小于等于0阻塞等待
- acquire(int permits);獲取permits個公共資源,公共資源-permits,如果公共資源<0阻塞等待
- release();釋放一個公共資源,公共資源+1
- release(int permits);釋放permits個公共資源,公共資源+permits
- boolean tryAcquire( );嘗試獲取一個公共資源,可以獲取返回true,不可以返回false
- boolean tryAcquire( int permits );嘗試獲取permits個公共資源,可以獲取返回true,不可以返回false
Semaphore s = new Semaphore(1);
s.acquire();
s.release();
示例:
import java.util.concurrent.Semaphore;
public class SemaphoreTest {
public static void main(String[] args) throws InterruptedException {
Semaphore t = new Semaphore(1);
new Thread( ()->{
try {
t.acquire( ); // 獲取
Thread.sleep(2000);
System.out.println(Thread.currentThread().getName()+" 執(zhí)行!");
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
t.release(); //釋放
}
} ,"thread1" ).start();
new Thread( ()->{
try {
t.acquire();
Thread.sleep(2000);
System.out.println(Thread.currentThread().getName()+" 執(zhí)行!");
} catch (Exception e) {
e.printStackTrace();
}finally {
t.release(1);
}
} ,"thread2" ).start();
}
}
到此這篇關(guān)于Java中的信號量Semaphore詳細(xì)解讀的文章就介紹到這了,更多相關(guān)信號量Semaphore內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實現(xiàn)學(xué)生管理系統(tǒng)詳解流程
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06
idea兩側(cè)的maven-project-structure圖標(biāo)不見了如何解決
這篇文章主要介紹了如何解決idea兩側(cè)的maven-project-structure圖標(biāo)不見了問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
java中如何把實體類轉(zhuǎn)成json格式的字符串
這篇文章主要介紹了java中如何把實體類轉(zhuǎn)成json格式的字符串問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
實例講解Java的設(shè)計模式編程中責(zé)任鏈模式的運用
這篇文章主要介紹了Java的設(shè)計模式編程中責(zé)任鏈模式的運用,講解了通過條件判斷結(jié)構(gòu)來分配不同對象的責(zé)任權(quán)限,需要的朋友可以參考下2016-02-02
Java結(jié)合uniapp實現(xiàn)驗證碼功能的示例詳解
UniApp 是一個基于 Vue.js 的跨平臺應(yīng)用開發(fā)框架,允許開發(fā)者使用統(tǒng)一的代碼庫來構(gòu)建多平臺應(yīng)用,這篇文章將給大家介紹Java結(jié)合uniapp實現(xiàn)驗證碼功能,文中通過詳細(xì)的代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-07-07
詳解Spring Cache使用Redisson分布式鎖解決緩存擊穿問題
本文主要介紹了詳解Spring Cache使用Redisson分布式鎖解決緩存擊穿問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
SpringBoot使用Apache Tika實現(xiàn)多種文檔的內(nèi)容解析
在日常開發(fā)中,我們經(jīng)常需要解析不同類型的文檔,如PDF、Word、Excel、HTML、TXT等,Apache Tika是一個強(qiáng)大的內(nèi)容解析工具,可以輕松地提取文檔中的內(nèi)容和元數(shù)據(jù)信息,本文將通過SpringBoot和Apache Tika的結(jié)合,介紹如何實現(xiàn)對多種文檔格式的內(nèi)容解析2024-12-12
SpringBoot+Jpa項目配置雙數(shù)據(jù)源的實現(xiàn)
本文主要介紹了SpringBoot+Jpa項目配置雙數(shù)據(jù)庫源的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12

