Semaphore解析

星夜孤帆發表於2020-12-08

一、Semaphore解析

1.1 解析

Semaphore:訊號量主要用於兩個目的,一個是用於多個共享資源的互斥使用,另一個用於併發執行緒數的控制。

1.2 爭車位Demo

public class SemaphoreDemo {
    public static void main(String[] args) {
        //模擬3個停車位
        Semaphore semaphore = new Semaphore(3);
        //模擬6部汽車
        for (int i = 1; i <= 6; i++) {
            new Thread(() -> {
                try {
                    semaphore.acquire();
                    System.out.println(Thread.currentThread().getName() + "\t搶到車位");
                    try {
                        TimeUnit.SECONDS.sleep(3);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + "\t停車3秒後離開車位");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    semaphore.release();
                }
            }, String.valueOf(i)).start();
        }
    }
}

視訊教程

相關文章