Java锁-解锁

Java锁-解锁,java,locking,reentrantlock,Java,Locking,Reentrantlock,此方法是否使线程和资源保持锁定 此方法是否使线程和资源保持锁定 否。锁将在finally块中解锁(释放)。这将在super.abo(abcModel)调用完成后,以及在返回该调用的结果之前发生 这直接源于的指定行为finally;e、 g.请参阅Java Oracle教程中的或,其中说明: “运行时系统始终执行finally块中的语句,而不管try块中发生了什么。” 。。。尽管它提到JVM退出是前面几句话中“总是”的一个例外。这个.xyz是什么?为什么您需要将get()-结果强制转换为Lock

此方法是否使线程和资源保持锁定

此方法是否使线程和资源保持锁定

否。锁将在
finally
块中解锁(释放)。这将在
super.abo(abcModel)
调用完成后,以及在返回该调用的结果之前发生

这直接源于
的指定行为finally
;e、 g.请参阅Java Oracle教程中的或,其中说明:

“运行时系统始终执行finally块中的语句,而不管try块中发生了什么。”



。。。尽管它提到JVM退出是前面几句话中“总是”的一个例外。

这个.xyz是什么?为什么您需要将
get()
-结果强制转换为
Lock
?读了很多遍之后,我仍然不明白您的实际问题是什么。看起来像是XY问题。有些地方看起来不对劲:代码无法编译…不要关注那个部分。想想看,我锁定了某个对象,然后在解锁它之前,我在“尝试”部分返回了一些东西。我不得不更改名称,对此我很抱歉
   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();
    }
}