java中 Semaphore的acquire(int permits)方法如果获取不到permits个许可证 则会被放入AQS中的阻塞队列吗
时间: 2024-02-23 21:56:45 浏览: 78
是的,Semaphore的acquire(int permits)方法会将指定数量的许可证数减1,如果当前许可证数不足,则当前线程会被阻塞,并放入AQS中的阻塞队列。只有当有足够的许可证数时,线程才会被唤醒并继续执行。同时,Semaphore的release(int permits)方法也可以释放指定数量的许可证数,唤醒等待队列中的线程,让它们继续执行。这种机制可以很好地控制并发访问某些资源的数量,实现线程间的同步。
阅读全文