ThreadPoolExecutor的策略策略有四种

CallerRunsPolicy【重要的任务】

当异步线程池满了时,使用阻塞式,丢弃异步的方式执行,此策略比较保守,不丢弃,不放弃。

AbortPolicy【不太重要,但需要监控的任务】

中止任务,并抛出异常。

DiscardPolicy【满足最先请求的任务】

丢弃当前线程,也就是新来的任务丢弃掉。

DiscarOldestPolicy【满足最后请求的任务】

丢弃任务列队里最老的线程。

对于ThreadPoolExecutor来说,还有关注的地方是,他有3种列队。

  • SynchronousQueue
  • LinkedBlockingQueue
  • ArrayBlockingQueue