ThreadPoolExecutor

ThreadPoolExecutor构造时的关键参数如下:

  1. corePoolSize
  2. maximumPoolSize
  3. keepAliveTime
  4. unit
  5. workQueue

当前的线程数小于corePoolSize时,只要有新任务提交,无论已经启动的线程是否处于IDLE状态,pool都会创建一个新线程来执行这个新任务。当前的线程数等于corePoolSize时, 如果有新任务提交,若workQueue未满,则将新任务加入workQueue;若workQueue已满,pool会创建一个新线程,从workQueue顶部取出一个任务处理,同时将新提交的任务放入workQueue。当前的线程数等于maximumPoolSize时,如果有新任务提交,若workQueue未满,则将新任务加入workQueue;若workQueue已满,则新任务会被丢弃。超出corePoolSize的线程处于IDLE状态超过keepAliveTime(unit是keepAliveTime的单位)后, 会自动退出。corePoolSize之内的线程在ThreadPoolExecutor shutdown之前默认是不会退出的,不过可以通过调用allowCoreThreadTimeout来设置corePoolSize之内的线程处于IDLE状态超过keepAliveTime后是否退出。

你可能感兴趣的:(ThreadPoolExecutor)