我有一个烦人的问题。现在,我有一段代码可以启动一个线程,在该线程中设置一个计时器,然后退出该线程并继续其生命。我的意图是让程序在继续代码流之前等待 TimerTask 完成。然而,显然,设置一个新的 TimerTask 并不会暂停执行以等待计时器运行完毕。
我该如何设置,以便我的代码到达 TimerTask,等待 TimerTask 过期,然后继续?我什至应该使用计时器吗?我到处寻找解决方案,但似乎找不到。
timer = new Timer();
Thread t = new Thread(new Runnable(){
boolean isRunning = true;
public void run() {
int delay = 1000;
int period = 1000;
interval = 10;
timerPanel.setText(interval.toString());
//Scheduling the below TimerTask doesn't wait
//for the TimerTask to finish before continuing
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
timerPanel.setText(setInterval().toString());
}
}, delay, period);
System.out.println("Thread done.");
}
});
t.start();
try {
t.join(); //doesn't work as I wanted
} catch (InterruptedException e) {
e.printStackTrace();
}
endTask();
提前致谢。
编辑:对于重复任务的困惑感到抱歉。我需要重复该任务,因为它是一个倒数计时器,每秒从 10 脉冲到 0。函数 setInterval() 最终取消了计时器。以下是相关代码:
private final Integer setInterval() {
if (interval == 1)
timer.cancel();
return --interval;
}