请看下面的例子:的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