java.util.concurrent.locks.ReentrantLock;
Public boolean ABCD(final AbcModel abcModel) {
final Lock lock = (Lock)this.xyz.get((Object)abcModel);
lock.lock();
try {
return super.ABCD(abcModel);
}
finally {
lock.unlock();
}
}
此方法是否会使线程和资源保持锁定状态?
答案 0 :(得分:1)
此方法是否会使线程和资源保持锁定状态?
没有。锁将在finally
块中解锁(释放)。这将在 super.ABCD(abcModel)
调用完成后发生,之前返回该调用的结果。
这直接来自finally
的指定行为;例如请参阅Java Oracle Tutorial中的JLS 14.20.2或Exceptions > The finally block,其中指出:
"无论try块中发生了什么,运行时系统总是执行finally块中的语句。"
...虽然它提到JVM退出是"总是"先前几句话。