使用場景:java
一個廁全部5個坑位,每來一我的都要佔一個坑位,當5我的都佔完了,後面的人只能等待。每當有一我的吃完飯,等待的其中一人就能夠繼續進入空的坑位。其餘人繼續等待。ui
Demo:code
public static void main(String[] args) { final Semaphore semaphore = new Semaphore(2); for (int i = 0; i < 5; i++) { new Thread(new Runnable() { public void run() { try { semaphore.acquire(); System.out.println(Thread.currentThread().getName() + " 開始蹲坑...."); TimeUnit.SECONDS.sleep(5); System.out.println(Thread.currentThread().getName() + " 蹲坑結束..."); } catch (InterruptedException e) { e.printStackTrace(); } finally { semaphore.release(); } } }).start(); } }
程序執行結果:
get
Thread-1 開始蹲坑.... Thread-0 開始蹲坑.... Thread-1 蹲坑結束... Thread-0 蹲坑結束... Thread-3 開始蹲坑.... Thread-2 開始蹲坑.... Thread-2 蹲坑結束... Thread-3 蹲坑結束... Thread-4 開始蹲坑.... Thread-4 蹲坑結束...