JavaにMutexはありますか?質問する

JavaにMutexはありますか?質問する

Java には Mutex オブジェクトがありますか、またはそれを作成する方法はありますか? 1 つの許可で初期化された Semaphore オブジェクトが役に立たないので、質問しています。次のケースを考えてみましょう。

try {
   semaphore.acquire();
   //do stuff
   semaphore.release();
} catch (Exception e) {
   semaphore.release();
}

最初の取得時に例外が発生した場合、catch ブロック内の解放によって許可が増加し、セマフォはバイナリ セマフォではなくなります。

正しい方法でしょうか?

try {
   semaphore.acquire();
   //do stuff
} catch (Exception e) {
   //exception stuff
} finally {
   semaphore.release();
}

上記のコードにより、セマフォがバイナリになることが保証されますか?

ベストアンサー1

Java の任意のオブジェクトは、ブロックを使用してロックとして使用できますsynchronized。これにより、例外が発生したときにロックが自動的に解放されます。

Object someObject = ...;

synchronized (someObject) {
  ...
}

詳細については、こちらをご覧ください:固有のロックと同期

おすすめ記事