某些線程在其run
方法中執行一系列操作。當站關閉時,通過onStationClosed
通知所有乘客。發生時,線程必須執行一些操作(例如,LeaveStation),並且線程必須終止,而不必完成所有剩餘操作。在某些情況下終止線程的正確方法是什麼?
什麼是正確的方式做到這一點:
// 1 - By checking station's state between each operationN?
public class Passenger extends Thread
{
Station station;
public void onStationClosed()
{
// Do some action before thread terminates
}
@Override
public void run()
{
operation1();
if(station.getState == Station.Closed) return;
operation2();
if(station.getState == Station.Closed) return;
operation3();
if(station.getState == Station.Closed) return;
..
operationN();
}
}
// 2 - Throw StationClosedException from onStationClosed and catch it in Station.
public class Passenger extends Thread
{
Station station;
public void onStationClosed()
{
// Do some action before thread terminates
throw new StationClosedException();
}
@Override
public void run()
{
operation1();
operation2();
..
operationN();
}
}
如何創建某種類型的堆棧來保存操作(這需要是一個具有operation()方法的接口),然後在while循環中迭代,但在循環開始時檢查站狀態? –
對控制流使用異常總是不好,異常只能用於異常。我認爲第一個很有趣,但仍然不理想。你能解釋一下你的問題嗎?你爲什麼需要線程?爲什麼你不能使用回傳信號向工作人員發出信號,說明當一個電臺關閉時不應再做任何工作? –
我有車站和乘客。乘客去車站並嘗試進入車站。乘客在車站做他們需要的東西,一旦車站關閉,即使他們沒有完成他們計劃做的所有事情,他們也需要離開。 – theateist