Я использую преимущество больших экранов для имения нескольких частей кода друг рядом с другом.
Вы не получите боеприпасов от меня. На самом деле я не хотел бы видеть, что это изменилось, с тех пор в чрезвычайных ситуациях я все еще вижу редкие случаи, где я должен изменить код от текстовой консоли.
corePoolSize
- минимальное количество потоков, используемых пулом. Число может увеличиваться до maxPoolSize
. Когда нагрузка снижается, размер пула снова уменьшается до corePoolSize
.
Отправка электронной почты кажется связанной операцией ввода-вывода. Я не думаю, что 500 потоков сделают это быстрее.
В javadoc лучше всего сказано :
Когда новый задача отправлена [...], и меньше
corePoolSize
потоков запущен, новый поток создается для обработать запрос, даже если другой рабочие потоки простаивают. Если есть большеcorePoolSize
, но меньшеmaximumPoolSize
запущенных потоков, a новый поток будет создан, только если очередь заполнена. УстановивcorePoolSize
иmaximumPoolSize
то же самое, вы создаете фиксированный размер пул потоков. УстановивmaximumPoolSize
по существу неограниченное значение, такое какInteger.MAX_VALUE
, вы разрешаете бассейн для размещения произвольной количество одновременных задач.
Что касается вашей конкретной ситуации, отправлять 500 писем одновременно бессмысленно, вы просто перегружаете почтовый сервер. Если вам нужно отправить большое количество электронных писем, используйте один поток и отправляйте их по конвейеру по одному. Почтовый сервер будет обрабатывать это гораздо более изящно, чем 500 отдельных соединений.