2016-06-21 6 views
1

私はセマフォを使用してバインドされたキューを作成しようとしています。セマフォのすべての許可を取得する必要があります。どのようにJavaのすべての許可を取得するには?

Javaにはこれを行う方法はありますか?

+0

参照https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Semaphore.html#acquire(int) –

+0

@ShireResident、実際には、drainPermits()メソッドは良いかもしれません適しています。 –

+0

@ jameslarge。答えをありがとう –

答えて

4

acquire(int)を呼び出すと、指定された許可数が取得されるまでブロックされます。

drainPermits()を呼び出すと、現在利用可能な許可が取得され、すぐに返されます。

「セマフォのすべての許可」を取得するという概念は、実際には意味をなさない。 Semaphoreが最初の数の無料許可で作成されますが、release()の追加許可とその後acquire()の許可があります。したがって、あなたのアプリケーションは割り当てたい許可数を追跡し、数字が変更されていないことを確認するために、慎重にacquire()release()の呼び出しを調整する必要があります。

関連する問題