public class ExecutorBuilder extends Object implements Builder<ThreadPoolExecutor>
| 限定符和类型 | 字段和说明 |
|---|---|
private Boolean |
allowCoreThreadTimeOut
线程执行超时后是否回收线程
|
private int |
corePoolSize
初始池大小
|
static int |
DEFAULT_QUEUE_CAPACITY
默认的等待队列容量
|
private RejectedExecutionHandler |
handler
当线程阻塞(block)时的异常处理器,所谓线程阻塞即线程池和等待队列已满,无法处理线程时采取的策略
|
private long |
keepAliveTime
线程存活时间,即当池中线程多于初始大小时,多出的线程保留的时长
|
private int |
maxPoolSize
最大池大小(允许同时执行的最大线程数)
|
private static long |
serialVersionUID |
private ThreadFactory |
threadFactory
线程工厂,用于自定义线程创建
|
private BlockingQueue<Runnable> |
workQueue
队列,用于存在未执行的线程
|
| 构造器和说明 |
|---|
ExecutorBuilder() |
| 限定符和类型 | 方法和说明 |
|---|---|
ThreadPoolExecutor |
build()
构建ThreadPoolExecutor
|
private static ThreadPoolExecutor |
build(ExecutorBuilder builder)
构建ThreadPoolExecutor
|
ExecutorService |
buildFinalizable()
创建有回收关闭功能的ExecutorService
|
static ExecutorBuilder |
create()
创建ExecutorBuilder,开始构建
|
ExecutorBuilder |
setAllowCoreThreadTimeOut(boolean allowCoreThreadTimeOut)
设置线程执行超时后是否回收线程
|
ExecutorBuilder |
setCorePoolSize(int corePoolSize)
设置初始池大小,默认0
|
ExecutorBuilder |
setHandler(RejectedExecutionHandler handler)
设置当线程阻塞(block)时的异常处理器,所谓线程阻塞即线程池和等待队列已满,无法处理线程时采取的策略
此处可以使用JDK预定义的几种策略,见
RejectPolicy枚举 |
ExecutorBuilder |
setKeepAliveTime(long keepAliveTime)
设置线程存活时间,即当池中线程多于初始大小时,多出的线程保留的时长,单位纳秒
|
ExecutorBuilder |
setKeepAliveTime(long keepAliveTime,
TimeUnit unit)
设置线程存活时间,即当池中线程多于初始大小时,多出的线程保留的时长
|
ExecutorBuilder |
setMaxPoolSize(int maxPoolSize)
设置最大池大小(允许同时执行的最大线程数)
|
ExecutorBuilder |
setThreadFactory(ThreadFactory threadFactory)
设置线程工厂,用于自定义线程创建
|
ExecutorBuilder |
setWorkQueue(BlockingQueue<Runnable> workQueue)
设置队列,用于存在未执行的线程
可选队列有: 1. |
ExecutorBuilder |
useArrayBlockingQueue(int capacity)
使用
ArrayBlockingQueue 做为等待队列有界队列,相对无界队列有利于控制队列大小,队列满时,运行线程小于maxPoolSize时会创建新线程,否则触发异常策略 |
ExecutorBuilder |
useSynchronousQueue()
使用
SynchronousQueue 做为等待队列(非公平策略)它将任务直接提交给线程而不保持它们。 |
ExecutorBuilder |
useSynchronousQueue(boolean fair)
使用
SynchronousQueue 做为等待队列它将任务直接提交给线程而不保持它们。 |
private static final long serialVersionUID
public static final int DEFAULT_QUEUE_CAPACITY
private int corePoolSize
private int maxPoolSize
private long keepAliveTime
private BlockingQueue<Runnable> workQueue
private ThreadFactory threadFactory
private RejectedExecutionHandler handler
private Boolean allowCoreThreadTimeOut
public ExecutorBuilder setCorePoolSize(int corePoolSize)
corePoolSize - 初始池大小public ExecutorBuilder setMaxPoolSize(int maxPoolSize)
maxPoolSize - 最大池大小(允许同时执行的最大线程数)public ExecutorBuilder setKeepAliveTime(long keepAliveTime, TimeUnit unit)
keepAliveTime - 线程存活时间unit - 单位public ExecutorBuilder setKeepAliveTime(long keepAliveTime)
keepAliveTime - 线程存活时间,单位纳秒public ExecutorBuilder setWorkQueue(BlockingQueue<Runnable> workQueue)
1.SynchronousQueue它将任务直接提交给线程而不保持它们。当运行线程小于maxPoolSize时会创建新线程,否则触发异常策略 2.LinkedBlockingQueue默认无界队列,当运行线程大于corePoolSize时始终放入此队列,此时maximumPoolSize无效。 当构造LinkedBlockingQueue对象时传入参数,变为有界队列,队列满时,运行线程小于maxPoolSize时会创建新线程,否则触发异常策略 3.ArrayBlockingQueue有界队列,相对无界队列有利于控制队列大小,队列满时,运行线程小于maxPoolSize时会创建新线程,否则触发异常策略
workQueue - 队列public ExecutorBuilder useArrayBlockingQueue(int capacity)
ArrayBlockingQueue 做为等待队列capacity - 队列容量public ExecutorBuilder useSynchronousQueue()
SynchronousQueue 做为等待队列(非公平策略)public ExecutorBuilder useSynchronousQueue(boolean fair)
SynchronousQueue 做为等待队列fair - 是否使用公平访问策略public ExecutorBuilder setThreadFactory(ThreadFactory threadFactory)
threadFactory - 线程工厂ThreadFactoryBuilderpublic ExecutorBuilder setHandler(RejectedExecutionHandler handler)
此处可以使用JDK预定义的几种策略,见RejectPolicy枚举
handler - RejectedExecutionHandlerRejectPolicypublic ExecutorBuilder setAllowCoreThreadTimeOut(boolean allowCoreThreadTimeOut)
allowCoreThreadTimeOut - 线程执行超时后是否回收线程public static ExecutorBuilder create()
ExecutorBuilderpublic ThreadPoolExecutor build()
build 在接口中 Builder<ThreadPoolExecutor>public ExecutorService buildFinalizable()
private static ThreadPoolExecutor build(ExecutorBuilder builder)
builder - ExecutorBuilderThreadPoolExecutorCopyright © 2020. All rights reserved.