91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Java多線程Semaphore工具怎么使用

小億
96
2024-01-25 13:32:29
欄目: 編程語言

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

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

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

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

import java.util.concurrent.Semaphore;

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

        // 創建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();
        }
    }
}

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

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

0
九龙坡区| 西乡县| 邵武市| 尉氏县| 商水县| 迁西县| 苗栗县| 新余市| 芮城县| 望谟县| 句容市| 龙门县| 新巴尔虎左旗| 阿拉善左旗| 凤翔县| 佳木斯市| 大埔县| 宿州市| 江永县| 封开县| 洪湖市| 靖安县| 阜新| 远安县| 合肥市| 肃北| 雅安市| 饶平县| 屏南县| 西安市| 运城市| 佛教| 安义县| 广平县| 称多县| 广丰县| 邯郸市| 赣榆县| 登封市| 谢通门县| 漠河县|