私はSemaphore
奇妙なものを十分に使用していません...
とにかく、それを使用していくつかのコードを確認していたところ、ロックとは異なり、パーミットは別のスレッドによって解放されることがわかりました (つまり、所有権はありません)。
私が調べたところ、次のように書かれConcurrency in Action
ています(p.98):
実装には実際の許可オブジェクトはありません....そのため、あるスレッドによって取得された許可は別のスレッドによって解放される可能性があります
私は以前にこの詳細に気付かなかったので、私が持っているOSの教科書を調べました(私の強調):
1 つのプロセスがセマフォ値を変更すると、他のプロセスは変更されません ....etc
では、これは Java 固有の設計上の決定ですか? つまり、セマフォはスレッドによって所有されていません。
または、セマフォの概念を誤解していますか?
注:これは、これが良い/悪い設計であるかどうかなどの問題ではありません。概念を理解していることを確認しようとしているだけです。