JUC练习代码-Semaphore简易用法

    技术2022-07-10  125

    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离开了车位

    可以用于限流场景

    Processed: 0.011, SQL: 9