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