執行緒訊號量semaphore
阿新 • • 發佈:2018-11-15
需求說明:6輛車搶佔三個停車位
package hello_java; import java.util.Random; import java.util.concurrent.Semaphore; public class Tool03 { public static void main(String[] args) { Semaphore semaphore = new Semaphore(3); for (int i = 0; i < 6; i++) { new Thread(() -> { // 搶佔資源 try { semaphore.acquire(); System.out.println("車輛" + Thread.currentThread().getName() + "獲得停車位"); // 停車時間 Thread.sleep(new Random().nextInt(1000)); // 釋放資源 System.out.println("車輛" + Thread.currentThread().getName() + "離開了"); semaphore.release(); } catch (InterruptedException e) { e.printStackTrace(); } },String.valueOf(i + 1)).start(); } } }
結果如下:
車輛1獲得停車位
車輛3獲得停車位
車輛2獲得停車位
車輛1離開了
車輛5獲得停車位
車輛2離開了
車輛4獲得停車位
車輛5離開了
車輛6獲得停車位
車輛4離開了
車輛3離開了
車輛6離開了