0

我有一个很长的方法并且有很多内部循环,如果满足某个条件,在内部循环的某个时刻,我希望线程被终止,但我也希望调用 finally 块,所以清理也会发生。我怎样才能做到这一点?

4

2 回答 2

1

return;当你想停下来的时候打电话。这将离开循环并运行 finally(只要带有return语句的循环try块内)。

例如

伪代码:

public void run () {
  try {
    loop {
        loop {
           if (condition) return;
        }
    }
  } finally {
    // always run
  }
}
于 2012-12-12T00:37:39.937 回答
1

请记住,“终止线程”实际上只是意味着 - 或者应该意味着! - run() 方法退出。将 finally 放在循环之外,作为线程/Runnable 的 run() 方法中的最后一件事。

于 2012-12-12T00:37:52.337 回答