Я работаю над программой, которая будет считывать данные из источника данных и публиковать эти данные по мере их чтения.У меня есть читатель и писатель, читатель создает несколько потоков, чтобы прочитать все данные, которые ему нужны для чтения, помещает данные в очередь, а писатель читает данные из очереди и публикует их.
Iесть контроллер для моих читателей и контроллер для моих писателей.Контроллеры реализуют интерфейс Callable
, но могут реализовывать интерфейс Runnable
, так как мой возврат вызова Void
.
Я хочу использовать исполнителя для запуска двух контроллеров.Контроллер считывателя должен вызываться каждые X минут (и X больше, чем время, необходимое для запуска контроллера).
Сейчас я создаю список Callables
, отправляя ихExecutorService, а именно:
List<Future<Void>> futures = ExecutorService es = new Executors.newFixedThreadPoll(2);
for(Future<Void> future: futures) {
try {
future.get();
} catch (Exception e) {
// log the error
}
}
Как я могу превратить это в исполнителя планирования, который запускает вызовы каждые 30 минут (или, точнее, через 30 минут после последнего запуска задания)?