Мне нужна программа на Java, которая запускает определенную работу каждые 5 минут.
- Если задание выполняется дольше 5 минут, новая итерация не должна начинаться до тех пор, пока не закончится текущая. В противном случае он должен начаться через 5 минут после начала последнего.
- Если по какой-либо причине задание не выполняется, следует повторить попытку через 1 минуту после сбоя (даже если оно выполнялось более 5 минут).
- Это должно быть надежно в случае, если системные часы возвращены, и не ждать слишком долго в этом случае.
Как это можно сделать аккуратно (например, используя ScheduledThreadPoolExecutor или TimerTask)?