ThreadPoolExecutor使用详解

2020-07-03  本文已影响0人  王凡77


1、ThreadPoolExecutor构造参数的详解

corePoolSize, // 线程池长期维持的线程数,即使线程处于Idle状态,也不会回收。

intmaximumPoolSize, // 线程数的上限

keepAliveTime, TimeUnit unit, // 超过corePoolSize的线程的idle时长, // 超过这个时间,多余的线程会被回收。

BlockingQueue workQueue, // 任务的排队队列 ,线程数持续增长会引发OOM。

ThreadFactory threadFactory, // 新线程的产生方式  为线程做标记更好查找线程

 RejectedExecutionHandler handler) // 拒绝策略 当线程池队列满时候触发 

AbortPolicy 抛出异常(默认策略)、DiscardPolicy抛弃、DiscardOldestPolicy抛弃队首、

CallerRunsPolicy主线程自己执行。

2、submit与execute的区别

submit是一个带返回值的方式。返回Future对象,其中主要有三种方式

对比源码发现 Runnable 本质上是被转化为一个Callable对象提交.

execute.(Runnable command):只接收runable对象。

注意:

submit提交会把线程的返回值与异常封装到Fututre对象中,运行时不会抛出异常。

execute会抛出异常。

上一篇下一篇

猜你喜欢

热点阅读