Java中Lock类放在try块之内和之外有什么区别?

原文: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();
}

posted @ 2020-04-19 22:25  日程百行  阅读(1151)  评论(0)    收藏  举报