Java: дождитесь завершения TimerTask, прежде чем продолжить выполнение
У меня немного раздражающая проблема. Прямо сейчас у меня есть фрагмент кода, который запускает поток, устанавливает таймер в этом потоке, а затем выходит из этого потока и продолжает его работу. Я хотел, чтобы программа дожидалась завершения 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;
}