Spring @Scheduled - запускается одновременно - PullRequest
1 голос
/ 09 апреля 2020

У меня есть приложение Spring boot 2.1.6.RELEASE, в котором у меня есть метод, помеченный

@Scheduled(cron = "*/10 * * * * *}

Я хочу, чтобы он запускался с этим кроном, ДАЖЕ, ЕСЛИ уже выполняется другое выполнение.

Я попытался увеличить номер потока исполнителя с помощью файла application.properties:

spring.task.scheduling.pool.size=10

Но, похоже, это не сработало, поскольку он все еще ожидает завершения выполнения до sh начало следующего.

Как правильно выполнять параллельное выполнение с использованием cron в аннотации @Scheduled?

1 Ответ

1 голос
/ 09 апреля 2020

Это правда, что размер пула по умолчанию для планировщика задач равен 1, но увеличение этого размера пула только делает больше потоков доступными для других @Scheduled методов. Предполагаемое поведение не для методов, запускаемых параллельно, так как в противном случае потоки могут быть исчерпаны.

Если вы хотите sh изменить это поведение, чтобы тот же метод работал параллельно, вам нужно использовать @EnableAsync и @Async аннотации. Вы также можете изменить размер пула исполнителя задач. При этом имейте в виду, что вы все еще можете исчерпать свои темы, поэтому будьте очень осторожны с изменением этого предполагаемого поведения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...