ThreadPoolExecutor 类共有四个构造函数,最多共有七个参数,接下来依次对这七个参数进行介绍
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue
- corePoolSize :要保留在池中的线程数,即使他们处于空闲状态,除非 allowCoreThreadTimeOut 已设置。默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务,当线程池中的线程数数目少于corePoolSize 时,有新任务进来就新建一个线程,即使有的线程没事干,当线程池中的线程数目达到 corePoolSize 时,将到达的任务放在缓存队列中。
- maximumPoolSize :池中允许的最大线程数。
- keepAliveTime :当线程数大于核心数时,这是多于空闲线程在终止前等待新任务的最长时间。默认情况下,只有当线程池中的线程数大于 corePoolSize 时,keepAliveTime 才会起作用,直到线程池中的线程数不大于 corePoolSize
- unit-keepAliveTime :参数时间的单位
- workQueue :用于在执行任务之前保存任务的队列,这个队列只保存方法 Runnable 提交的任务 execute
- threadFactory :执行器创建新线程时使用的工厂
- handler :由于线程达到边界或者队列满时阻塞执行时使用的处理程序
当满足以下条件之一时,就会抛出异常 IllegalArgumentException :
- corePoolSize < 0
- maximumPoolSize <= 0
- keepAliveTime < 0
- corePoolSize > maximumPoolSize
- NullPointerException :如果任务队列,工厂或者处理程序为空时



