В этом коде я создаю ScheduledExecutorService
с пулом из 5 потоков
и вызвать scheduleWithFixedDelay
метод 5 раз. Это создаст 5 планировщиков, и каждый планировщик будет вызывать testBean::test
каждые секунды:
@PostConstruct
public void hz() {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5, new ThreadPoolTaskScheduler());
for (int i = 0; i < 5; i++) {
scheduledExecutorService.scheduleWithFixedDelay(testBean::test, 1, 1, TimeUnit.SECONDS);
}
}
Но у меня есть несколько вопросов.
Правильно ли я понимаю, что ScheduledExecutorService
просто интерфейс Java, а ThreadPoolTaskScheduler()
- это весна I, plementation?
Существует ли вместо этого пружинный аналог ScheduledExecutorService
?
Самый важный вопрос . Что произойдет, если я попытаюсь вызвать метод scheduleWithFixedDelay
больше раз, чем пул в ScheduledExecutorService
(например, 9)?:
@PostConstruct
public void hz() {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5, new ThreadPoolTaskScheduler());
for (int i = 0; i < 9; i++) {
scheduledExecutorService.scheduleWithFixedDelay(testBean::test, 1, 1,
TimeUnit.SECONDS);
}
}