Java の lock の使い方は?

Javaでは下記手順によってロックを使用できます:

  1. ReentrantLockクラスを使用してロックオブジェクトを作成します。
  2. ロックロック = 新しいReentrantLock()
  3. ロックを取得する:同期が必要なコードブロックの前にlock()メソッドを呼び出してロックを取得する。
  4. lock.ロック();
    try {
    // 同期ブロック
    } finally {
    // 例外時にもロック解放を確実に行うため、finallyブロックで解放を行う
    lock.アンロック();
    }
  5. ロックを獲得後に、同期が必要な処理を同期ブロック内で行う。
  6. synchronized(lock) {
    // 同期コードブロック
    }
  7. finally ブロックで unlock() メソッドを呼び出し、確実にロックを解除する。
  8. lock.アンロックする();

・ロックする対象を明示的に指定できる

  1. ロックの取得と解放をより柔軟に制御することができます。
  2. フェアロックとノンフェアロックを実現できます。
  3. 複数の条件(Condition)でスレッドの待機と再開を制御できます。

ロックを使用する際は、必ずロック取得後にはfinallyブロックでロックを解放してください。例外によりロックの解放ができなくなると、デッドロックになってしまします。

bannerAds