1
我正在開發一個系統,它必須每N秒定期啓動一個任務(下載文件)。這不是一個問題,我做到了用Timer
和Timertask
如下:如何啓動定時執行但定時執行的定時器
FileTimer rXMLFileTimer;
private static Timer timer = new Timer("FileReader");
rXMLFileTimer = new ReadFileTimer();
int myDelay = 30;
timer.scheduleAtFixedRate(rXMLFileTimer, 0, myDelay * 1000);
和timertask
將運行至rXMLFileTimer.cancel()
被調用。到現在爲止沒有問題。現在
,已要求該timertask
應該運行,直到rXMLFileTimer.cancel()
被稱爲或給定的時間量。
我的第一種方法(沒有工作)爲實現Future
如下:
public class Test {
public static class MyJob implements Callable<ReadFileTimer> {
@Override
public ReadFileTimer call() throws Exception {
Timer timer = new Timer("test");
ReadFileTimer t = new ReadFileTimer();
int delay = 10;
// Delay in seconds
timer.schedule(t, 0, delay * 1000);
return t;
}
}
public static void main(String[] args) {
MyJob job = new MyJob();
System.out.println(new Date());
Future<ReadFileTimer> control = Executors.newSingleThreadExecutor().submit(job);
ReadFileTimer timerTask = null;
try {
int maxAmountOfTime = 30;
timerTask = control.get(maxAmountOfTime, TimeUnit.SECONDS);
} catch (TimeoutException ex) {
control.cancel(true);
} catch (InterruptedException ex) {
} catch (ExecutionException ex) {}
}
}
這不是工作,因爲我不能叫timerTask.cancel()
後超時有發生。那麼我的問題是:如何在給定的時間內啓動timerTask
?
謝謝!
謝謝。這比我想要的要容易得多 – Luixv 2014-11-01 11:57:09