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