ThreadPoolExecutor 线程池执行器

时间:2020-01-09 10:36:28  来源:igfitidea点击:

java.util.concurrent.ThreadPoolExecutor是ExecutorService接口的实现。 " ThreadPoolExecutor"使用其内部池化线程之一执行给定的任务(" Callable"或者" Runnable")。

" ThreadPoolExecutor"内部包含的线程池可以包含不同数量的线程。池中的线程数由以下变量确定:

  • corePoolSize
  • maximumPoolSize

如果将任务委派给线程池时在线程池中创建的线程数少于" 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文本所示。