JUC練習代碼-Semaphore簡易用法

public class SemaphoreTest {
    public static void main(String[] args) {
        //6輛車搶三個停車位
        Semaphore semaphore = new Semaphore(3);
        for(int i=0;i<6;i++){

            new Thread(()->{
                try {
                    semaphore.acquire();
                    System.out.println(Thread.currentThread().getName()+"搶到了車位");
                    //霸佔2秒
                    TimeUnit.SECONDS.sleep(2);
                    System.out.println(Thread.currentThread().getName()+"離開了車位");
                    semaphore.release();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }).start();
        }
    }
}

打印結果如下:

Thread-0搶到了車位
Thread-2搶到了車位
Thread-1搶到了車位
Thread-1離開了車位
Thread-2離開了車位
Thread-3搶到了車位
Thread-4搶到了車位
Thread-0離開了車位
Thread-5搶到了車位
Thread-3離開了車位
Thread-5離開了車位
Thread-4離開了車位

可以用於限流場景

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章