原文:https://www.zhihu.com/question/54613772
下面2个例子是使用Lock类的不同写法,例子1是把lock()的方法调用写在了try的块之外,例子2是把lock()的调用在了try块之内,JDK自带的document都是按照例子1的写法。不知道例子2的写法会有什么问题?
例子1:
lock.lock(); try{ //do critical section code, which may throw exception } finally { lock.unlock(); }
例子2: 是否这种写法下,某种情况的时候lock()方法会抛出异常,finally块中unlock()调用就会抛出IllegalMonitorStateException?
try{ lock.lock(); //do critical section code, which may throw exception } finally { lock.unlock(); }