В соответствии с Java Спецификации: public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
«создает пул потоков, которые могут планировать команды для запуска после заданной задержки или периодически выполнять.»метод Исполнителей Factory newScheduledThreadPool всегда возвращает тот же пул потоков
Но по моему опыту, даже если я создаю два отдельных ScheduledExecutorService
, вызывая метод фабрики newScheduledThreadPool(int corePoolSize)
дважды и планируя две совершенно разные задачи, связанные с записью, оба потока работают синхронно, то есть один ждет друг друга. Учитывая, что были созданы два отдельных пула потоков, они запускались одновременно.
public static ScheduledExecutorService SCANNER_SERVICE = Executors.newScheduledThreadPool(10);
public static ScheduledExecutorService UNSERVICERESTORED_SCANNER_SERVICE = Executors.newScheduledThreadPool(10);
Scanner scanner=new Scanner();
UnServiceRestoredTicketScanner unServiceRestoredTicketScanner=new UnServiceRestoredTicketScanner();
if(SCANNER_SERVICE.isShutdown())
SCANNER_SERVICE=Executors.newScheduledThreadPool(10);
SCANNER_SERVICE.scheduleWithFixedDelay(scanner, 0, 30, TimeUnit.SECONDS);
if(UNSERVICERESTORED_SCANNER_SERVICE.isShutdown())
UNSERVICERESTORED_SCANNER_SERVICE=Executors.newScheduledThreadPool(10);
UNSERVICERESTORED_SCANNER_SERVICE.scheduleWithFixedDelay(unServiceRestoredTicketScanner, 0, 40, TimeUnit.SECONDS);
Выход:
Scanner Thread started - [email protected]
ServiceRestoredTicketScanner Thread started - com.csp.produ[email protected]15ed659
Thread ended - [email protected]
Scanner Thread started - [email protected]
ServiceRestoredTicketScanner Thread ended - com.csp.produ[email protected]15ed659
Thread ended - [email protected]
Scanner Thread started - [email protected]
ServiceRestoredTicketScanner Thread started - com.csp.productionsupport.queuemonitor.events.UnServiceRe[email protected]
Thread ended - [email protected]
Scanner Thread started - [email protected]
ServiceRestoredTicketScanner Thread ended - com.csp.produ[email protected]15ed659
Thread ended - [email protected]
Итак, я предполагаю, что вторая задача заканчивается aprox. 70 секунд после планирования? – Antoniossss
FYI: Вы планируете задачу _same_ здесь в обоих пулах. Могут ли они совместно использовать блокировку, которая блокирует их запуск одновременно. Потому что я заверяю вас, что они работают в разных потоках. – Gray