Я нашел похожие вопросы, заданные здесь, но не было ответов на мое удовлетворение. Таким образом, перефразируя вопрос again-
У меня есть задача, которую необходимо выполнять периодически (скажем, с интервалом в 1 минуту). В чем преимущество использования Timertask & Таймер, чтобы сделать это, в отличие от создания нового потока, который имеет бесконечный цикл со сном?
Фрагмент кода с использованием timertask-
TimerTask uploadCheckerTimerTask = new TimerTask(){
public void run() {
NewUploadServer.getInstance().checkAndUploadFiles();
}
};
Timer uploadCheckerTimer = new Timer(true);
uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000);
Фрагмент кода с использованием Thread и sleep-
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
Мне действительно не нужно беспокоиться, если я пропущу определенные циклы, если выполнение логики занимает больше времени интервала.
Пожалуйста, прокомментируйте это..
Обновление:
Недавно я обнаружил еще одну разницу между использованием Timer и Thread.sleep(). Предположим, что текущее системное время 11:00. Если по какой-то причине мы откатим системное время до 10:00, Timer остановит выполнение задачи до достижения 11:00, а метод Thread.sleep() продолжит выполнение задачи без помех. Это может быть важным фактором при принятии решения, что использовать между этими двумя.