第3章 ラムダ式を使ったプログラミング : 問題 2 : ReentrantLock
問題 2
java.util.concurrent.locks
のReentrantLock
を使用する場合には、次のイデオムでロックとアンロックをする必要がある。
myLock.lock(); try { 何らかの処理 } finally { myLock.unlock(); }
次のように呼び出すことができるwithLock
メソッドを提供せよ
withLock(myLock, () -> { 何らかの処理 })
解答
public static void withLock(ReentrantLock lock, Runnable runner) { lock.lock(); try { runner.run(); } finally { lock.unlock(); } }