久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Java多線程Semaphore工具怎么使用

171次閱讀
沒有評論

共計 885 個字符,預(yù)計需要花費 3 分鐘才能閱讀完成。

Semaphore 是 Java 多線程中的一個重要工具,用于控制多個線程對共享資源的訪問。Semaphore 可以被看作是一個計數(shù)信號量,控制同時訪問某個資源的線程個數(shù)。

Semaphore 的常用方法有以下幾個:

  • acquire(): 獲取一個許可,如果沒有許可可用,線程將阻塞,直到有一個許可可用。
  • release(): 釋放一個許可,使其它線程可以獲取許可。如果有阻塞的線程正在等待許可,將會選擇其中一個線程獲取許可。

下面是一個使用 Semaphore 的示例代碼:

import java.util.concurrent.Semaphore;

public class SemaphoreExample {public static void main(String[] args) {// 創(chuàng)建 Semaphore 對象,指定許可的數(shù)量為 3 
        Semaphore semaphore = new Semaphore(3);

        // 創(chuàng)建 10 個線程 
        for (int i = 0; i < 10; i++) {final int threadNum = i;
            new Thread(() -> {try {// 獲取許可 
                    semaphore.acquire();
                    System.out.println("Thread " + threadNum + " is running");
                    Thread.sleep(1000);
                    System.out.println("Thread " + threadNum + " is finished");
                } catch (InterruptedException e) {e.printStackTrace();
                } finally {// 釋放許可 
                    semaphore.release();}
            }).start();}
    }
}

上面的代碼創(chuàng)建了一個 Semaphore 對象,并指定許可的數(shù)量為 3。然后創(chuàng)建了 10 個線程,每個線程在執(zhí)行之前先獲取一個許可,如果許可不可用,線程將被阻塞。執(zhí)行完任務(wù)后,釋放許可,以便其它線程可以獲取許可繼續(xù)執(zhí)行。

運行上面的代碼,你會發(fā)現(xiàn)最多只有 3 個線程同時在執(zhí)行,其它線程會被阻塞,等待許可的釋放。這樣可以有效地控制對共享資源的訪問。

丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2024-01-29發(fā)表,共計885字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 渑池县| 尖扎县| 玉溪市| 比如县| 札达县| 双流县| 浠水县| 东乡| 墨竹工卡县| 平罗县| 南郑县| 新龙县| 攀枝花市| 淳安县| 普兰店市| 孟连| 抚松县| 资兴市| 托克托县| 怀集县| 读书| 安仁县| 广汉市| 鄂伦春自治旗| 格尔木市| 稻城县| 临武县| 眉山市| 宁陕县| 和静县| 泗阳县| 义乌市| 马关县| 宾川县| 和硕县| 镇巴县| 天长市| 文水县| 察雅县| 桐乡市| 页游|