2009-09-02 13 views
4

は、私は、JavaセマフォクラスのdrainPermitsの契約を理解しようとしている許可がない場合、Semaphor.drainPermitsは何を行いますか?

のJavaDocは、単に読み:

公共int型drainPermits()

Acquire and return all permits that are immediately available. 

Returns: 
    the number of permits 

何の許可がない場合を現在利用可能なブロックとブロックが利用可能になるまで待機しますか?

答えて

9

いいえ、すぐに0が返されます。利用可能な許可を必要としません。

+0

誰かがロック用に使用していたように見えるコードを見直していると、彼らは厄介な驚きのためにいるのでしょうか? – Uri

+1

彼らは何をしているのかによって異なります。 「ロックするためにそれを使用する」は実際にはほとんどヒントを与えません。 –

+0

もしそれらを1に初期化してドレインを使って "tryAcquire"を実装しても問題ありません。 多くの異なる言語とシステムでは、(ネストしていない)mutexの多くの実装は、1に初期化されたセマフォです。 – pgast

関連する問題