Я пытаюсь выполнять задание по электронной почте каждую минуту. Работа имеет 5 услуг. Каждые 5 сервисов должны работать параллельно.
Использование ExecutorService:
ExecutorService service = null;
if (serviceMap != null && serviceMap.size() > 0) {
for (;;) {
service = Executors.newFixedThreadPool(serviceMap.size()); // Here Service Map size will be 5
for (Map.Entry entry : serviceMap.entrySet()) {
service.submit(new EmailService(conn, mailParam));
}
service.shutdown();
service.awaitTermination(1, TimeUnit.MINUTES);
}
}
Использование ScheduledExecutorService :
ScheduledExecutorService scheduledExecutorService = null;
if (serviceMap != null && serviceMap.size() > 0) {
scheduledExecutorService = Executors.newFixedThreadPool(serviceMap.size()); // Here Service Map size will be 5
for (Map.Entry entry : serviceMap.entrySet()) {
ScheduledFuture scheduledFuture =
scheduledExecutorService.schedule(new EmailService(conn, mailParam),
60,
TimeUnit.SECONDS);
System.out.println("result = " + scheduledFuture.get());
}
scheduledExecutorService.shutdown();
}
Если я использую ExecutorService, каждую минуту я отключаю службу и снова запускаю службу. Все в порядке?
Если я использую ScheduledExecutorService, я не смогу написать код для параллельного выполнения службы и не смогу запускать задание каждую минуту.
Выше мой фрагмент кода. Пожалуйста, помогите мне решить эту проблему.