Semaphore.drainPermits()有什么意义?

vol*_*lni 4 java concurrency

public int drainPermits():

获取并返回所有可立即获得的许可.返回:获取的许可数量.

为什么有人想要获取并立即从信号量中释放所有可用的许可?如果他们想查看可用许可证的数量,为什么不使用Semaphore.availablePermits()

JB *_*zet 10

它不释放它们.它获得了所有,这就是全部:

Semaphore s = new Semaphore(10);
System.out.println(s.availablePermits()); // 10
s.drainPermits();
System.out.println(s.availablePermits()); // 0
Run Code Online (Sandbox Code Playgroud)