Разница между Thread и Threadpool - PullRequest
5 голосов
/ 06 июля 2011

Может ли кто-нибудь подсказать мне пример с Thread и ThreadPool, в чем разница между ними?какой лучше использовать ...?какие недостатки у него

Ответы [ 2 ]

10 голосов
/ 06 июля 2011

Поскольку поток может быть запущен только один раз, вам придется использовать поток для каждой задачи.Однако создание и запуск потоков несколько дорогостоящий и может привести к ситуации, когда слишком много потоков ожидает выполнения (не помню точное имя для этого прямо сейчас), что еще больше снижает производительность.

Потокпул - как следует из названия - пул рабочих потоков, которые всегда работают.Затем эти потоки обычно берут задачи из списка, выполняют их, а затем пытаются выполнить следующую задачу.Если задачи нет, поток будет ждать.

Использование пула потоков имеет несколько преимуществ:

  • вам не нужно создавать поток для задачи
  • у вас обычно есть оптимальное количество потоков для вашей системы (в зависимости от JVM тоже)
  • вы можете сосредоточиться на написании задач и использовать пул потоков для управления инфраструктурой

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

3 голосов
/ 06 июля 2011

Пул потоков - это набор потоков, которые назначаются для выполнения задач в форме.Преимущества использования шаблона пула потоков состоят в том, что вы можете определить, сколько потоков разрешено выполнять одновременно.Это сделано для того, чтобы избежать сбоев сервера из-за высокой загрузки ЦП или нехватки памяти, например, аппаратная емкость сервера может поддерживать до 100 запросов в секунду.

Пул базы данных имеет аналогичную концепцию с пулом потоков.

Этот шаблон широко используется в большинстве процессов приложений фоновых серверов.

Хотя поток является блоком, выполняющим задачу.

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