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文本所示。