読者です 読者をやめる 読者になる 読者になる

Tiger synchronized ReentrantLock

Java

ReentrantLock(再入可能ロック)を調べる。

java.util.concurrent.locksのLockを実装するReentrantLockは
並行処理及びメモリの意味体系がsynchronizedと同じだが

・lock polling
・interruptible lock waits
・timed lock waits

などの機能が追加され、多くのスレッドが共有リソースに対してアクセスしようとする場合に
JVNがスレッドのスケジューリングに費やす時間が減少し、その分、多くの時間をスレッドの実行に使われるようです。

コードで見るとsynchronizedとLockの違いは

synchronized (object) {
}
Lock lock = new ReentrantLock();
lock.lock();
try {
    // update object state
} finally {
    lock.unlock();
}

ここで、Lockにおける注意点はfinallyで必ずロックを解放する必要があるという事。
ここが重要。

なのでロックを使う場合は、注意する必要があります。