Каково различие между corePoolSize и maxPoolSize в Spring ThreadPoolTaskExecutor

Я использую преимущество больших экранов для имения нескольких частей кода друг рядом с другом.

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

35
задан shmosel 1 July 2019 в 20:08
поделиться

2 ответа

corePoolSize - минимальное количество потоков, используемых пулом. Число может увеличиваться до maxPoolSize . Когда нагрузка снижается, размер пула снова уменьшается до corePoolSize .

Отправка электронной почты кажется связанной операцией ввода-вывода. Я не думаю, что 500 потоков сделают это быстрее.

19
ответ дан 27 November 2019 в 06:42
поделиться

В javadoc лучше всего сказано :

Когда новый задача отправлена ​​[...], и меньше corePoolSize потоков запущен, новый поток создается для обработать запрос, даже если другой рабочие потоки простаивают. Если есть больше corePoolSize , но меньше maximumPoolSize запущенных потоков, a новый поток будет создан, только если очередь заполнена. Установив corePoolSize и maximumPoolSize то же самое, вы создаете фиксированный размер пул потоков. Установив maximumPoolSize по существу неограниченное значение, такое как Integer.MAX_VALUE , вы разрешаете бассейн для размещения произвольной количество одновременных задач.

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

40
ответ дан 27 November 2019 в 06:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: