Tiger synchronized ReentrantLock
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で必ずロックを解放する必要があるという事。
ここが重要。
なのでロックを使う場合は、注意する必要があります。