2012-12-12 36 views
0

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

+0

你不能用try/finally来包围逻辑原因? – Perception

+0

它被包围了,我正在考虑调用Thread.interrupt(),但会跳过finally块。但我会按照xagyg的回答 – Arya

回答

1

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

E.g.

伪代码:

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

请记住, “终止线程” 其实只是指:或者应该是说 - 这里的run()方法退出!作为线程的/ Runnable的run()方法中的最后一个东西放在循环外。

相关问题