Поскольку поток может быть запущен только один раз, вам придется использовать поток для каждой задачи.Однако создание и запуск потоков несколько дорогостоящий и может привести к ситуации, когда слишком много потоков ожидает выполнения (не помню точное имя для этого прямо сейчас), что еще больше снижает производительность.
Потокпул - как следует из названия - пул рабочих потоков, которые всегда работают.Затем эти потоки обычно берут задачи из списка, выполняют их, а затем пытаются выполнить следующую задачу.Если задачи нет, поток будет ждать.
Использование пула потоков имеет несколько преимуществ:
- вам не нужно создавать поток для задачи
- у вас обычно есть оптимальное количество потоков для вашей системы (в зависимости от JVM тоже)
- вы можете сосредоточиться на написании задач и использовать пул потоков для управления инфраструктурой
Редактировать:Вот несколько неплохих статей о параллелизме в целом: Sutter's Mill , посмотрите внизу, чтобы увидеть больше ссылок.Хотя они в основном написаны для C / C ++, общие концепции одинаковы, поскольку они также описывают взаимозависимость между решениями для параллелизма и оборудованием.Хорошая статья для понимания проблем производительности параллелизма - эта статья на drdobbs.com .