Semaphore.drainPermits()有什么意义?

时间:2012-12-03 22:38:51

标签: java concurrency

public int drainPermits():

  

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

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

1 个答案:

答案 0 :(得分:10)

它不会释放它们。它收集了所有这些,就是全部:

Semaphore s = new Semaphore(10);
System.out.println(s.availablePermits()); // 10
s.drainPermits();
System.out.println(s.availablePermits()); // 0