Java 锁定 - 解锁
Java Lock - Unlock
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();
}
}
此方法是否使线程和资源保持锁定状态?
Does this method make threads and resources remain lock?
没有。锁将在 finally
块中解锁(释放)。这将在 super.ABCD(abcModel)
调用完成后发生,并且 在 返回该调用的结果之前。
这直接遵循 finally
的指定行为;例如请参阅 Java Oracle 教程中的 JLS 14.20.2 or Exceptions > The finally block,其中指出:
"The runtime system always executes the statements within the finally block regardless of what happens within the try block."
...虽然它提到 JVM 退出是 "always" 前面几句话的例外。
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();
}
}
此方法是否使线程和资源保持锁定状态?
Does this method make threads and resources remain lock?
没有。锁将在 finally
块中解锁(释放)。这将在 super.ABCD(abcModel)
调用完成后发生,并且 在 返回该调用的结果之前。
这直接遵循 finally
的指定行为;例如请参阅 Java Oracle 教程中的 JLS 14.20.2 or Exceptions > The finally block,其中指出:
"The runtime system always executes the statements within the finally block regardless of what happens within the try block."
...虽然它提到 JVM 退出是 "always" 前面几句话的例外。