Timer & TimerTask против Thread + sleep в Java

Я нашел подобные вопросы, задаваемые здесь, но там не былоТ ответы на мое удовлетворение. Так что перефразируя вопрос снова

У меня есть задача, которую необходимо выполнять периодически (скажем, с интервалом в 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 () продолжит выполнение задачи без помех. Это может быть важным фактором при принятии решения, что использовать между этими двумя.

Ответы на вопрос(7)

Ваш ответ на вопрос