Thread.sleep() не может быть где-то в потоке, он может быть в коде задачи, поэтому выполнение задачи будет блокировать на 5000 мс, а затем запустить до завершения.
Обратите внимание, что java.util.Timer является однопоточным планировщиком, и если выполнение задачи заблокировано, таймер не сможет выполнять другие запланированные задачи. См. API
Соответствие каждому объекту Timer представляет собой один фоновый поток, который используется для выполнения всех задач таймера последовательно. Задачи таймера должны быстро завершаться. Если задача таймера занимает слишком много времени для завершения, она «запускает» поток выполнения задачи таймера. Это может, в свою очередь, задерживать выполнение последующих задач, которые могут «сгруппироваться» и выполняться быстро, когда (и если) завершающая задача окончательно завершается.
Самый простой и интересный способ решить это - проверить его самостоятельно с помощью кода, который вы создали. Что происходит, когда вы это делаете? –
Другим способом является просмотр файлов исходного кода Java API, которые поставляются с JDK, в файле 'src.zip'. – gparyani