Каково использование Пула потоков? Существует ли хороший пример реального мира?
Пул потоков - это первоначально созданная группа потоков, которая ожидает задания и выполняет их. Идея состоит в том, чтобы потоки существовали всегда, чтобы нам не приходилось каждый раз тратить время на их создание. Они подходят, когда мы знаем, что есть поток заданий, которые нужно обработать, даже если может быть какое-то время, когда рабочих мест нет.
Вот красивая диаграмма из Википедии :
Пулы потоков из учебных пособий по Java содержат хороший обзор:
Использование рабочих потоков минимизирует накладные расходы из-за создания потоков. Объекты потоков используют значительный объем памяти, и в крупномасштабном приложении выделение и освобождение множества объектов потоков создает значительные накладные расходы на управление памятью.
Вы можете считать потоки фактическими рабочими, а пулы потоков - группой рабочих. Вы можете создать несколько групп по разным причинам, таким как приоритет, цель и т. Д. Таким образом, хотя один пул может использоваться для задач общего назначения, таких как фоновые расписания, рассылка электронной почты и т. Д., Может существовать пул обработки транзакций для одновременной обработки нескольких транзакций. В случае службы «Исполнитель», я уверен, вы не хотели бы откладывать выполнение транзакционных заданий после того, как не будут завершены другие некритические действия, такие как рассылка электронных писем с подтверждением или действия по обслуживанию базы данных. Вы можете разделить их на пулы и поддерживать их независимо. Это очень упрощенный ответ, не вдаваясь в технический жаргон. С уважением, KT
Простой поиск Google приведет к огромному количеству информации о пулах потоков Java и пулах потоков в целом.
Вот несколько полезных ссылок: