Package org.aoju.bus.core.thread
Class ExecutorBuilder
java.lang.Object
org.aoju.bus.core.thread.ExecutorBuilder
- All Implemented Interfaces:
Serializable,Builder<ThreadPoolExecutor>
ThreadPoolExecutor 建造者
1. 如果池中任务数 corePoolSize - 放入立即执行
2. 如果池中任务数 corePoolSize - 放入队列等待
3. 队列满 - 新建线程立即执行
4. 执行中的线程 maxPoolSize - 触发handler异常
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.aoju.bus.core.builder.Builder
Builder.HashKey -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbuild()构建ThreadPoolExecutor创建有回收关闭功能的ExecutorServicestatic ExecutorBuilderof()创建ExecutorBuilder,开始构建setAllowCoreThreadTimeOut(boolean allowCoreThreadTimeOut) 设置线程执行超时后是否回收线程setCorePoolSize(int corePoolSize) 设置初始池大小,默认0setHandler(RejectedExecutionHandler handler) 设置当线程阻塞(block)时的异常处理器,所谓线程阻塞即线程池和等待队列已满,无法处理线程时采取的策略setKeepAliveTime(long keepAliveTime) 设置线程存活时间,即当池中线程多于初始大小时,多出的线程保留的时长,单位纳秒setKeepAliveTime(long keepAliveTime, TimeUnit unit) 设置线程存活时间,即当池中线程多于初始大小时,多出的线程保留的时长setMaxPoolSize(int maxPoolSize) 设置最大池大小(允许同时执行的最大线程数)setThreadFactory(ThreadFactory threadFactory) 设置线程工厂,用于自定义线程创建setWorkQueue(BlockingQueue<Runnable> workQueue) 设置队列,用于存在未执行的线程 可选队列有:useArrayBlockingQueue(int capacity) 使用ArrayBlockingQueue做为等待队列 有界队列,相对无界队列有利于控制队列大小,队列满时,运行线程小于maxPoolSize时会创建新线程,否则触发异常策略使用SynchronousQueue做为等待队列(非公平策略) 它将任务直接提交给线程而不保持它们。useSynchronousQueue(boolean fair) 使用SynchronousQueue做为等待队列 它将任务直接提交给线程而不保持它们。
-
Field Details
-
DEFAULT_QUEUE_CAPACITY
public static final int DEFAULT_QUEUE_CAPACITY默认的等待队列容量- See Also:
-
-
Constructor Details
-
ExecutorBuilder
public ExecutorBuilder()
-
-
Method Details
-
of
-
setCorePoolSize
设置初始池大小,默认0- Parameters:
corePoolSize- 初始池大小- Returns:
- this
-
setMaxPoolSize
设置最大池大小(允许同时执行的最大线程数)- Parameters:
maxPoolSize- 最大池大小(允许同时执行的最大线程数)- Returns:
- this
-
setKeepAliveTime
设置线程存活时间,即当池中线程多于初始大小时,多出的线程保留的时长- Parameters:
keepAliveTime- 线程存活时间unit- 单位- Returns:
- this
-
setKeepAliveTime
设置线程存活时间,即当池中线程多于初始大小时,多出的线程保留的时长,单位纳秒- Parameters:
keepAliveTime- 线程存活时间,单位纳秒- Returns:
- this
-
setWorkQueue
设置队列,用于存在未执行的线程 可选队列有:1.
SynchronousQueue它将任务直接提交给线程而不保持它们。当运行线程小于maxPoolSize时会创建新线程,否则触发异常策略 2.LinkedBlockingQueue默认无界队列,当运行线程大于corePoolSize时始终放入此队列,此时maximumPoolSize无效。 当构造LinkedBlockingQueue对象时传入参数,变为有界队列,队列满时,运行线程小于maxPoolSize时会创建新线程,否则触发异常策略 3.ArrayBlockingQueue有界队列,相对无界队列有利于控制队列大小,队列满时,运行线程小于maxPoolSize时会创建新线程,否则触发异常策略- Parameters:
workQueue- 队列- Returns:
- this
-
useArrayBlockingQueue
使用ArrayBlockingQueue做为等待队列 有界队列,相对无界队列有利于控制队列大小,队列满时,运行线程小于maxPoolSize时会创建新线程,否则触发异常策略- Parameters:
capacity- 队列容量- Returns:
- this
-
useSynchronousQueue
使用SynchronousQueue做为等待队列(非公平策略) 它将任务直接提交给线程而不保持它们。当运行线程小于maxPoolSize时会创建新线程,否则触发异常策略- Returns:
- this
-
useSynchronousQueue
使用SynchronousQueue做为等待队列 它将任务直接提交给线程而不保持它们。当运行线程小于maxPoolSize时会创建新线程,否则触发异常策略- Parameters:
fair- 是否使用公平访问策略- Returns:
- this
-
setThreadFactory
设置线程工厂,用于自定义线程创建- Parameters:
threadFactory- 线程工厂- Returns:
- this
- See Also:
-
setHandler
设置当线程阻塞(block)时的异常处理器,所谓线程阻塞即线程池和等待队列已满,无法处理线程时采取的策略此处可以使用JDK预定义的几种策略,见
RejectPolicy枚举- Parameters:
handler-RejectedExecutionHandler- Returns:
- this
- See Also:
-
setAllowCoreThreadTimeOut
设置线程执行超时后是否回收线程- Parameters:
allowCoreThreadTimeOut- 线程执行超时后是否回收线程- Returns:
- this
-
build
构建ThreadPoolExecutor- Specified by:
buildin interfaceBuilder<ThreadPoolExecutor>- Returns:
- 被构建的对象
-
buildFinalizable
创建有回收关闭功能的ExecutorService- Returns:
- 创建有回收关闭功能的ExecutorService
-