欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的Semaphore計(jì)數(shù)信號(hào)量詳細(xì)解析

 更新時(shí)間:2023年11月20日 08:34:05   作者:夢(mèng)斷淚影  
這篇文章主要介紹了Java中的Semaphore計(jì)數(shù)信號(hào)量詳細(xì)解析,Semaphore?是一個(gè)計(jì)數(shù)信號(hào)量,必須由獲取它的線程釋放,常用于限制可以訪問(wèn)某些資源的線程數(shù)量,例如通過(guò)?Semaphore?限流,需要的朋友可以參考下

1.介紹

Semaphore 是一個(gè)計(jì)數(shù)信號(hào)量,必須由獲取它的線程釋放。

常用于限制可以訪問(wèn)某些資源的線程數(shù)量,例如通過(guò) Semaphore 限流。

2.具體方法

  • acquire()
    • 獲取一個(gè)令牌,在獲取到令牌、或者被其他線程調(diào)用中斷之前線程一直處于阻塞狀態(tài)。
  • acquire(int permits)
    • 獲取一個(gè)令牌,在獲取到令牌、或者被其他線程調(diào)用中斷、或超時(shí)之前線程一直處于阻塞狀態(tài)。
  • acquireUninterruptibly()
    • 獲取一個(gè)令牌,在獲取到令牌之前線程一直處于阻塞狀態(tài)(忽略中斷)。
  • tryAcquire()
    • 嘗試獲得令牌,返回獲取令牌成功或失敗,不阻塞線程。
  • tryAcquire(long timeout, TimeUnit unit)
    • 嘗試獲得令牌,在超時(shí)時(shí)間內(nèi)循環(huán)嘗試獲取,直到嘗試獲取成功或超時(shí)返回,不阻塞線程。
  • release()
    • 釋放一個(gè)令牌,喚醒一個(gè)獲取令牌不成功的阻塞線程。
  • hasQueuedThreads()
    • 等待隊(duì)列里是否還存在等待線程。
  • getQueueLength()
    • 獲取等待隊(duì)列里阻塞的線程數(shù)。
  • drainPermits()
    • 清空令牌把可用令牌數(shù)置為0,返回清空令牌的數(shù)量。
  • availablePermits()
    • 返回可用的令牌數(shù)量。

3.實(shí)現(xiàn)場(chǎng)景

模擬停車場(chǎng)停車,進(jìn)來(lái)一輛,指示牌減一,出去一輛,指示牌加一,當(dāng)指示牌顯示為0時(shí),禁止車輛進(jìn)入。

public class Test_Semaphore {
    //停車場(chǎng)同時(shí)容納的車輛10
    private static Semaphore semaphore=new Semaphore(10);
    public static void main(String[] args) {
        //模擬50輛車進(jìn)入停車場(chǎng)
        for(int i=0;i<50;i++){
            Thread thread=new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        System.out.println("===="+Thread.currentThread().getName()+"來(lái)到停車場(chǎng)");
                        if(semaphore.availablePermits()==0){
                            System.out.println("車位不足,請(qǐng)耐心等待");
                        }
                        semaphore.acquire();//獲取令牌嘗試進(jìn)入停車場(chǎng)
                        System.out.println(Thread.currentThread().getName()+"成功進(jìn)入停車場(chǎng)");
                        Thread.sleep(new Random().nextInt(10000));//模擬車輛在停車場(chǎng)停留的時(shí)間
                        System.out.println(Thread.currentThread().getName()+"駛出停車場(chǎng)");
                        semaphore.release();//釋放令牌,騰出停車場(chǎng)車位
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            },i+"號(hào)車");
            thread.start();
        }
    }
}

到此這篇關(guān)于Java中的Semaphore計(jì)數(shù)信號(hào)量詳細(xì)解析的文章就介紹到這了,更多相關(guān)Semaphore計(jì)數(shù)信號(hào)量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 什么是Java布隆過(guò)濾器?如何使用你知道嗎

    什么是Java布隆過(guò)濾器?如何使用你知道嗎

    這篇文章主要為大家詳細(xì)介紹了Java布隆過(guò)濾器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • Java在PowerPoint中添加上標(biāo)和下標(biāo)的實(shí)現(xiàn)方法

    Java在PowerPoint中添加上標(biāo)和下標(biāo)的實(shí)現(xiàn)方法

    當(dāng)我們?cè)谘菔疚母逯刑砑由虡?biāo)、版權(quán)或其他符號(hào)時(shí),我們可能希望該符號(hào)出現(xiàn)在某個(gè)文本的上方或下方。在Microsoft PowerPoint中,我們可以通過(guò)對(duì)符號(hào)應(yīng)用上標(biāo)或下標(biāo)格式來(lái)實(shí)現(xiàn)這種效果,這篇文章主要介紹了Java在PowerPoint中添加上標(biāo)和下標(biāo),需要的朋友可以參考下
    2022-10-10
  • springboot中的@value取不到正確的值問(wèn)題

    springboot中的@value取不到正確的值問(wèn)題

    這篇文章主要介紹了springboot中的@value取不到正確的值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java計(jì)算日期相差天數(shù)的4種簡(jiǎn)單方法舉例

    java計(jì)算日期相差天數(shù)的4種簡(jiǎn)單方法舉例

    最近在工作中遇見(jiàn)一個(gè)小需求,要求計(jì)算兩個(gè)日期之間相差幾天,下面這篇文章主要給大家介紹了關(guān)于java計(jì)算日期相差天數(shù)的4種簡(jiǎn)單方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Spring MVC中使用Controller如何進(jìn)行重定向

    Spring MVC中使用Controller如何進(jìn)行重定向

    這篇文章主要介紹了Spring MVC中使用Controller如何進(jìn)行重定向操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Springboot如何去掉URL后面的jsessionid

    Springboot如何去掉URL后面的jsessionid

    這篇文章主要介紹了Springboot如何去掉URL后面的jsessionid,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • javafx 如何將項(xiàng)目打包為 Windows 的可執(zhí)行文件exe

    javafx 如何將項(xiàng)目打包為 Windows 的可執(zhí)行文件exe

    文章介紹了三種將JavaFX項(xiàng)目打包為.exe文件的方法:方法1使用jpackage(適用于JDK14及以上版本),方法2使用Launch4j(適用于所有JDK版本),方法3使用InnoSetup(用于創(chuàng)建安裝包),每種方法都有其特點(diǎn)和適用范圍,可以根據(jù)項(xiàng)目需求選擇合適的方法,感興趣的朋友一起看看吧
    2025-01-01
  • spring cloud Hystrix斷路器的使用(熔斷器)

    spring cloud Hystrix斷路器的使用(熔斷器)

    這篇文章主要介紹了spring cloud Hystrix斷路器的使用(熔斷器),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • java語(yǔ)言圖形用戶登錄界面代碼

    java語(yǔ)言圖形用戶登錄界面代碼

    這篇文章主要為大家詳細(xì)介紹了java語(yǔ)言圖形用戶登錄界面代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 用JAVA實(shí)現(xiàn)一套背壓機(jī)制

    用JAVA實(shí)現(xiàn)一套背壓機(jī)制

    背壓依我的理解來(lái)說(shuō),是指訂閱者能和發(fā)布者交互,可以調(diào)節(jié)發(fā)布者發(fā)布數(shù)據(jù)的速率,解決把訂閱者壓垮的問(wèn)題,這篇文章主要介紹了用JAVA自己實(shí)現(xiàn)一套背壓機(jī)制,需要的朋友可以參考下
    2023-06-06

最新評(píng)論