Если вы не используете систему реального времени, никакой «таймер» не даст вам такой точности. Таймеры, как правило, обеспечивают «это произойдет, по крайней мере, в то время, которое вы хотите ... но, может быть, позже».
Это базовая ОС, а не Java.
Редактировать:
При этом ... Вы действительно имеете в виду "ровно 5 секунд" или через несколько миллисекунд сработает? Если спустя несколько миллисекунд сработает, таймер будет в порядке. Вполне возможно, что иногда эти «несколько миллисекунд» могут составлять несколько сотен, в зависимости от того, что происходит в системе (ОС, а также такие вещи, как сборка мусора в ВМ).