第十三章: 明示的なロック
普通のlockには制限があるので、その制限から逃れたい場合にはReentrantLockを使うと良いですよ、って内容。
finally句でのunlockが必要で、忘れがちなので通常はlockやsynchronizedを使う方が良い。但し、ポーリングやインタラプト、時間制限などを用いたい場合はReentrantLockを使うと良い。
Javadocから引用。
class X { private final ReentrantLock lock = new ReentrantLock(); // ... public void m() { lock.lock(); // block until condition holds try { // ... method body } finally { lock.unlock() } } }
これだけ見るとやっぱり普通のlockで十分じゃないか、と思ってしまうが、色々な付加機能がある。