スレッドがセマフォを取得できない場合 (許可がないため) はどうなりますか。待ち状態に移行しますか?
EDIT:セマフォが利用可能になると、スレッドの開始は前の実行シーケンスを再開します。
スレッドがセマフォを取得できない場合 (許可がないため) はどうなりますか。待ち状態に移行しますか?
EDIT:セマフォが利用可能になると、スレッドの開始は前の実行シーケンスを再開します。
スレッドがセマフォを取得できない場合 (許可がないため) はどうなりますか。待ち状態に移行しますか?
はい。あなたが話している場合java.util.concurrent.Semaphore
(そして方法aquire
はこれが起こることです:
このセマフォからパーミットを取得し、パーミットが使用可能になるまでブロックするか、スレッドが中断されます。
[...]
利用可能な許可がない場合、現在のスレッドはスレッド スケジューリングの目的で無効になり、次の 2 つのいずれかが発生するまで休止状態になります。
他のスレッドがこのセマフォの release() メソッドを呼び出し、現在のスレッドに次に許可が割り当てられます。また
他のスレッドが現在のスレッドに割り込みます。
tryAquire
ただし、名前が示すように、ロックを取得しようとするだけで、許可がない場合はブロックする代わりに false を返します。
セマフォが使用可能になると、スレッドは以前の実行シーケンスを再開しますか。
はい。別のスレッドがこのスレッドを呼び出した場合、そのrelease
スレッドから戻ってacquire
実行を継続できます。