Что заставляет нас использовать пулы потоков?
Я лично думаю, что основная причина в том, что есть много задач, которые необходимо обрабатывать за короткий промежуток времени.
Преимущества использования пулов потоков:
1. Уменьшите время, потраченное на создание и уничтожение потоков и накладные расходы системных ресурсов
2. Если вы не используете пулы потоков, это может привести к созданию большого количества потоков и потреблять системную память.
Ниже приведены несколько бассейнов потоков, которые поставляются с Java:
1. NewFixedThreadpool создает пул потоков с указанным количеством рабочих потоков.
Всякий раз, когда представлена задача, создается рабочий поток.
2. NewcachedThreadpool создает кэш -бассейн.
Этот тип функций пула потоков:
1).
2). После завершения, если вы снова отправите новую задачу, пул потоков воссоздает рабочую ветку.
3. Newsingletreadexecutor создает однопоточного исполнителя, то есть создает только уникальный рабочий поток для выполнения задачи.
Самая большая особенность одного рабочего потока заключается в том, что она может гарантировать, что каждая задача выполняется последовательно, и что в любой момент времени не будет многочисленных потоков.
4.
Суммировать:
1. Fixedthreadpool - это типичный и отличный пул потоков, который имеет преимущества повышения эффективности программы и экономии, потребляемых накладных расходов при создании потоков. Однако, когда пул потоков простаивается, то есть, когда в пуле потоков нет задач, он не выпустит поток работника, а также будет занимать определенные системные ресурсы.
два. Характеристика CachedThreadpool заключается в том, что когда пул потоков простаивает, то есть, когда в пуле потоков нет задач, он выпустит рабочую ветку, тем самым освобождая ресурсы, занятые рабочим потоком. Однако, когда появляется новая задача, необходимо создать новый рабочий поток, и требуется определенная система системы. Более того, при использовании CachedThreadpool вы должны обратить внимание на контроль количества задач, в противном случае, поскольку большое количество потоков, работающих одновременно, система будет парализована.
Java thread bool tradepoolexecutor пример использования
Пакет com.sondon.mayi.jpool; Сделано. * ThreadPoolexeCutor (* int corepoolsize, // минимальное количество потоков, поддерживаемых пулом потоков* int maximumpoolsize, // максимальное количество потоков, поддерживаемых пулом потоков* Long Keepalivetime, // время простоя, разрешенное пулом потоков* // Пул резьбов поддерживает единицу свободного времени, разрешенное потоком* Blockqueue <Runnable> workqueue, // Очередь буфера, используемая пулом потоков* decuceedexecutionhandler handler // Стратегия обработки пула потоков для отклоненных задач)*//threadpoolexecutor threadpool = New ThreadPoolexeCutor (5, 10, 3, TimeUnit.seconds, New ArrayBlockingqueue <Runnable> (10), New ThreadPoolexeCutor.discardoldestpolicy ()); Сгенерировать задачу и перенесите его на строку потока Task = "Task ---" + I; ); .sleep (3000); ); // Threadpool Active Threads Количество} catch (прерывание Exception e) {e.printstacktrace (); {Test Relate Thread Redoy} */ public void testnewcachedthreadpool () {ThreadPoolexecutor Threadpool = (ThreadPoolexecutor) Executors.newcachedThreadpool (); oolexecutor ) Исполнители.newsc heduledThreadpool (100); Bool String = "task---" + i; ProduceTaskSleept Ime); : "+threadpool.getPoolSize ()); / /Количество потоков в системе пула потоков. e) {e.printstacktr Ace (); */ public void testnewcachedthreadpool_call able () {expertionersers es = executors.newfixedthreadpool (10); ("Callible Result:"+Результат); Прерывание. Реализация {private s tatic int ourmanceTasktime = 2000; (Start .. » Object getTask () {ret urn this.threadpooltaskdata; реализует Callable <t> {@override public t call () бросает исключение {System.out.println («Начало выполнять Callable»);