請看下面的例子:的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()做一些事情,需要時間。我必須等到doStuff完成後,如果有任何正在運行,然後再繼續doMoreStuff。
是否有添加waitUntilFinished方法的任何(合法)方法,我可以在這裏使用,或者我應該只是複製'n'paste java.util.Timer類到我自己並自己實現該方法?
是不是更容易只使用不同的線程? – Wietlol
取決於它們是否是異步的。 doMoreStuff(),取決於doStuff()是否完整? – oldmanswit
doMoreStuff()關閉doStuff()使用的一些Closeables ...所以簡單地說,是的,它取決於doStuff()不再運行,並且再也不會運行 – Wietlol