最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的Semaphore計數(shù)信號量詳細解析

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

1.介紹

Semaphore 是一個計數(shù)信號量,必須由獲取它的線程釋放。

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

2.具體方法

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

3.實現(xiàn)場景

模擬停車場停車,進來一輛,指示牌減一,出去一輛,指示牌加一,當指示牌顯示為0時,禁止車輛進入。

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

到此這篇關于Java中的Semaphore計數(shù)信號量詳細解析的文章就介紹到這了,更多相關Semaphore計數(shù)信號量內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

岳普湖县| 富锦市| 富锦市| 年辖:市辖区| 金坛市| 永年县| 海宁市| 淮北市| 昌宁县| 周口市| 城市| 南召县| 万山特区| 来凤县| 五家渠市| 云南省| 安义县| 清远市| 苗栗市| 新化县| 壶关县| 龙里县| 定西市| 建水县| 独山县| 盐山县| 澎湖县| 三原县| 曲周县| 中牟县| 龙井市| 威远县| 石台县| 绥棱县| 栖霞市| 探索| 铜梁县| 屏山县| 青铜峡市| 张家口市| 黔江区|