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