Java Lock - 解锁

时间:2018-03-07 11:34:57

标签: java locking reentrantlock

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

此方法是否会使线程和资源保持锁定状态?

1 个答案:

答案 0 :(得分:1)

  

此方法是否会使线程和资源保持锁定状态?

没有。锁将在finally块中解锁(释放)。这将在 super.ABCD(abcModel)调用完成后发生之前返回该调用的结果。

这直接来自finally的指定行为;例如请参阅Java Oracle Tutorial中的JLS 14.20.2Exceptions > The finally block,其中指出:

  

"无论try块中发生了什么,运行时系统总是执行finally块中的语句。"

...虽然它提到JVM退出是"总是"先前几句话。