ThreadPoolExecutor
corePoolSize
保持的最小线程数
1.6后提供allowCoreThreadTimeOut,允许空闲时回收corePollSize
keepAliveTime & unit
空闲时间后,线程数不低于corePoolSize时进行回收
handler
拒绝策略
CallerRunsPolicy
提交任务的线程自己去执行该任务
AbortPolicy
默认,抛RejectedExecutionException
慎用
DiscardPolicy
直接丢弃任务,没有任何异常抛出
DiscardOldestPolicy
丢弃最老的任务,其实就是把最早进入工作队列的任务丢弃,然后把新任务加入到工作队列
建议自定义拒绝策略
execute执行不会抛异常,推荐任务内部自行捕获异常处理
ExecutorService&Future
submit(Runnable task)
submit(Callable<T> task)
submit(Runnable task, T result)
Future.get()属于阻塞式操作
CompletableFuture
ForkJoinPool线程池,线程数=CPU核数
利用重载方法自定义线程池
CompletionStage
串行
thenApply
thenAccept
thenRun
thenCompose
Async结尾代表异步执行
AND
thenCombine
thenAcceptBoth
runAfterBoth
Async结尾代表异步执行
OR
applyToEither
acceptEither
runAfterEither
Async结尾代表异步执行
异常处理
exceptionally
whenComplete
handle
Async结尾代表异步执行