2012-12-12 35 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()方法中的最後一個東西放在循環外。

相關問題