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();
}
}