JUC_Semaphore 不念不忘少年蓝@ 2023-07-03 06:21 1阅读 0赞 信号量定义两种操作: * acquire(获取) 当一个线程调用acquire操作时,它要么通过成功获取信号量(信号量减1),要么一直等下去,直到有线程释放信号量,或超时。 * release(释放)实际上会将信号量的值加1,然后唤醒等待的线程。 * 信号量主要用于两个目的,一个是用于多个共享资源的互斥使用,另一个用于并发线程数的控制。 -------------------- # demo-停车场 # import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; public class SemaphoreDemo { public static void main(String[] args) { Semaphore semaphore=new Semaphore(5); for (int i = 0; i < 10; i++) { new Thread(()->{ try { semaphore.acquire(); System.out.println("第"+Thread.currentThread().getName()+"辆进入"); TimeUnit.SECONDS.sleep(2); System.out.println("第"+Thread.currentThread().getName()+"辆离开"); } catch (InterruptedException e) { e.printStackTrace(); }finally { semaphore.release(); } },String.valueOf(i)).start(); } } }
还没有评论,来说两句吧...