Try-catch-finally中的死锁

时间:2014-07-24 13:27:42

标签: java multithreading deadlock

我现在手机,所以无法提供代码。 我在try块中启动了3个线程..(在try方法中,我正在使用缓冲区读取器?我还使用了一些弃用的方法。这将确保死锁。 我的问题是为什么现在没有执行finally块?

3 个答案:

答案 0 :(得分:1)

如果你在try块中死锁,finally块将不会运行,因为finally块保证在try块之后运行(它不会结束)。作为类比,如果我从1开始计算到无穷大后我愿意支付100美元,那么我将永远无需支付给你(因为你无法在有限的时间内计算无穷大)。确保您在所有地方的相同订单中获取并释放锁。

答案 1 :(得分:0)

如果finally块正常结束或发生错误,将执行try块。如果try块中出现死锁,则无法访问finally块。

答案 2 :(得分:0)

只有当方法从try块中出来时才会执行finally块。

TRY - > catch - > finally(总是)这就是方法的执行方式。

主要是Try-Catch-Finally用于捕获异常。 死锁不是例外。 如果有任何异常(Io Exception,因为您正在使用缓冲读取器)那么只有您的finally和catch块将执行。(TRY块已死锁)。

finally块确保在try块之后运行(由#Elliott声明)。