Java 如果没有可用的许可证,Semaphor.drainPermits会做什么?

Java 如果没有可用的许可证,Semaphor.drainPermits会做什么?,java,concurrency,Java,Concurrency,我试图理解Java信号量类中的drainPermits契约 JavaDoc的内容如下: 公共内部排水许可证() 如果当前没有可用的许可证,它是否会阻止并等待一个许可证可用?否,它将立即返回0。它不需要任何可用的许可证。因此,如果我在查看代码时发现有人可能在使用它进行锁定,他们会感到非常意外,对吗?这完全取决于他们在做什么。“使用它进行锁定”并没有给出太多提示。如果他们将其初始化为1,并使用drain实现“tryAcquire”,则可以。在许多不同的语言和系统中,(非嵌套)互斥体的许多实现都是初始

我试图理解Java信号量类中的drainPermits契约

JavaDoc的内容如下:

公共内部排水许可证()


如果当前没有可用的许可证,它是否会阻止并等待一个许可证可用?

否,它将立即返回0。它不需要任何可用的许可证。

因此,如果我在查看代码时发现有人可能在使用它进行锁定,他们会感到非常意外,对吗?这完全取决于他们在做什么。“使用它进行锁定”并没有给出太多提示。如果他们将其初始化为1,并使用drain实现“tryAcquire”,则可以。在许多不同的语言和系统中,(非嵌套)互斥体的许多实现都是初始化为1的信号量。
Acquire and return all permits that are immediately available.

Returns:
    the number of permits