は、以下の例を考えてみますJavaのTimerTaskを最後のタスクを待つ
// Helper constructor
public Timer(final TimerTask action, final long interval)
{
scheduleAtFixedRate(action, 0, interval);
}
... (different class)
private Timer myTimer;
public void start()
{
myTimer = new Timer(new TimerTask(){
@Override
public void run()
{
doStuff(); <<----------------------------
} |
}, 10); |
} |
|
public void stop() |
{ |
myTimer.cancel(); |
myTimer.purge(); |
doMoreStuff(); // << may not be called while doStuff is running!
}
doStuff()は時間がかかる何かをします。私doMoreStuffを続行する前にdoStuffが実行されていれば終了するまで待つ必要があります。
ここで使用できるwaitUntilFinishedメソッドを追加する(法的)方法はありますか、java.util.Timerクラスを自分自身にコピーしてメソッドを実装するだけですか?
別のスレッドを使用するのは簡単ですか? – Wietlol
非同期かどうかによって異なります。 doStore()は完了していますか? – oldmanswit
doMoreStuff()は、doStuff()が使用するいくつかのCloseableを閉じます。単純な言い方をすれば、それはdoStuff()に依存し、もう一度実行しないでください。 – Wietlol