package concurrent; import java.util.concurrent.*; /** * Semaphoreç¨æ¥åç¹æ®èµæºçå¹¶åè®¿é®æ§å¶æ¯ç¸å½åéçï¼å¦ææä¸å¡åºæ¯éè¦è¿è¡æµéæ§å¶ï¼å¯ä»¥ä¼å èèSemaphoreã */ public class SemaphoreDemo { // ï¼Semaphoreå 许çæå¤§è®¸å¯æ°ä¸º5ï¼ä¹å°±æ¯å 许çæå¤§å¹¶åæ§è¡ç线ç¨ä¸ªæ°ä¸º5 private static Semaphore semaphore = new Semaphore(5); public static void main(String[] args) { // 表示50个å¦ç ExecutorService service = Executors.newFixedThreadPool(10); for (int i = 0; i< 10;i++){ service.execute(() ->{ try{ System.out.println(Thread.currentThread().getName() + "åå¦åå¤è·åç¬..."); semaphore.acquire(); System.out.println(Thread.currentThread().getName() + " åå¦è·åå°ç¬"); System.out.println(Thread.currentThread().getName() + " å¡«åè¡¨æ ¼ing....."); TimeUnit.SECONDS.sleep(3); semaphore.release(); System.out.println(Thread.currentThread().getName() + " å¡«åå®è¡¨æ ¼ï¼å½è¿äºç¬ï¼ï¼ï¼ï¼ï¼ï¼"); }catch (InterruptedException e){ e.printStackTrace(); } }); } service.shutdown(); } }