Java中的信號(hào)量Semaphore詳細(xì)解讀
Java中的信號(hào)量Semaphore
信號(hào)量機(jī)制可以用來保證線程互斥
創(chuàng)建Semaphore對(duì)象: 傳入一個(gè)整形參數(shù),類似于公共資源
常用方法:
- acquire();獲取一個(gè)公共資源,公共資源-1,如果公共資源小于等于0阻塞等待
- acquire(int permits);獲取permits個(gè)公共資源,公共資源-permits,如果公共資源<0阻塞等待
- release();釋放一個(gè)公共資源,公共資源+1
- release(int permits);釋放permits個(gè)公共資源,公共資源+permits
- boolean tryAcquire( );嘗試獲取一個(gè)公共資源,可以獲取返回true,不可以返回false
- boolean tryAcquire( int permits );嘗試獲取permits個(gè)公共資源,可以獲取返回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中的信號(hào)量Semaphore詳細(xì)解讀的文章就介紹到這了,更多相關(guān)信號(hào)量Semaphore內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis動(dòng)態(tài)拼接實(shí)現(xiàn)有條件的插入
這篇文章主要介紹了mybatis動(dòng)態(tài)拼接實(shí)現(xiàn)有條件的插入,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02springboot @Controller和@RestController的區(qū)別及應(yīng)用詳解
這篇文章主要介紹了springboot @Controller和@RestController的區(qū)別及應(yīng)用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-1115道非常經(jīng)典的Java面試題 附詳細(xì)答案
這篇文章主要為大家推薦了15道非常經(jīng)典的Java面試題,附詳細(xì)答案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10Java sleep方法及中斷方式、yield方法代碼實(shí)例
這篇文章主要介紹了Java sleep方法及中斷方式、yield方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04解決java idea新建子目錄時(shí)命名不是樹形結(jié)構(gòu)的問題
這篇文章主要介紹了解決java idea新建子目錄時(shí)命名不是樹形結(jié)構(gòu)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08SpringBoot接收數(shù)組參數(shù)和集合參數(shù)方式
這篇文章主要介紹了SpringBoot接收數(shù)組參數(shù)和集合參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03ConditionalOnProperty配置swagger不生效問題及解決
這篇文章主要介紹了ConditionalOnProperty配置swagger不生效問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06java開發(fā)之SQL語句中DATE_FORMAT函數(shù)舉例詳解
要將日期值格式化為特定格式,請(qǐng)使用DATE_FORMAT函數(shù),下面這篇文章主要給大家介紹了關(guān)于java開發(fā)之SQL語句中DATE_FORMAT函數(shù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05Java學(xué)習(xí)筆記:關(guān)于Java?double類型相加問題
這篇文章主要介紹了關(guān)于Java?double類型相加問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12