ThreadPoolExecutor 线程池执行器
时间:2020-01-09 10:36:28 来源:igfitidea点击:
java.util.concurrent.ThreadPoolExecutor是ExecutorService接口的实现。 " ThreadPoolExecutor"使用其内部池化线程之一执行给定的任务(" Callable"或者" Runnable")。
" ThreadPoolExecutor"内部包含的线程池可以包含不同数量的线程。池中的线程数由以下变量确定:
corePoolSizemaximumPoolSize
如果将任务委派给线程池时在线程池中创建的线程数少于" corePoolSize",则即使该池中存在空闲线程,也会创建一个新线程。
如果内部任务队列已满,并且正在运行" corePoolSize"线程或者更多线程,但正在运行的线程数少于" maximumPoolSize"线程,则创建一个新线程来执行任务。
创建一个ThreadPoolExecutor
ThreadPoolExecutor有几个可用的构造函数。例如:
int corePoolSize = 5;
int maxPoolSize = 10;
long keepAliveTime = 5000;
ExecutorService threadPoolExecutor =
new ThreadPoolExecutor(
corePoolSize,
maxPoolSize,
keepAliveTime,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>()
);
但是,除非我们需要为ThreadPoolExecutor明确指定所有这些参数,否则通常更容易使用java.util.concurrent.Executors类中的工厂方法之一,如ExecutorService文本所示。

