Thread.sleep() для ожидания выполнения работы — используйте синхронизацию или scheduler.Это всего лишь предположение о времени: выполнение может возобновиться слишком рано или слишком поздно.
Для координации используйте
wait() / notify() или CountDownLatch.Для повторяющихся задач используйте
ScheduledExecutorService.
