在一定条件下停止当前运行的线程,最后调用块

时间:2012-12-12 00:34:55

标签: java multithreading

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

2 个答案:

答案 0 :(得分:1)

当您想要停止时,请致电return;。这将离开循环并运行finally(只要带有 return 语句的循环 try块中)。

E.g。

<强>伪代码:

public void run () {
  try {
    loop {
        loop {
           if (condition) return;
        }
    }
  } finally {
    // always run
  }
}

答案 1 :(得分:1)

请记住&#34;终止线程&#34;真的只是意味着 - 或者应该意味着! - run()方法退出。把finally放在循环之外,作为线程&runnable的run()方法的最后一件事。