java同步锁问题请问大神,如果没有非Runtime异常,为什么lock还是得在finally中释放

tkk13 2016-07-05 06:02:05
如题,如果发生的是非Runtime异常,那当然得在finally中释放,以求catch到以后可以继续该线程运行,可是如果发生的是Runtime异常,那么这一线程本身就会终止运行,是否释放lock对该线程不就没有意义了吗?.
既然是这样的话,为什么还需要
try {
// access the resource protected by this lock
} finally {
l.unlock();
}
这段代码是API说明文件中的,它的意思显然是try语句不会throw任何非Runtime异常,所以才没有catch.
是习惯还是会有其他例外的情况发生才必须用finally?
...全文
391 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
解开者 2016-07-08
  • 打赏
  • 举报
回复
如果锁对象能被一组线程访问,其中某个线程异常终止就会导致这些线程死锁 java只使用try和finally不使用catch的原因和场景
zhs471420954 2016-07-05
  • 打赏
  • 举报
回复
代码更安全吧

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧