public static class ThreadPoolBuilder.CachedThreadPoolBuilder extends Object
1. 任务提交时, 如果线程数还没达到minSize即创建新线程并绑定任务(即minSize次提交后线程总数必达到minSize, 不会重用之前的线程)
minSize默认为0, 可设置保证有基本的线程处理请求不被回收.
2. 第minSize次任务提交后, 新增任务提交进SynchronousQueue后,如果没有空闲线程立刻处理,则会创建新的线程, 直到总线程数达到上限.
maxSize默认为Integer.Max, 可以进行设置.
如果设置了maxSize, 当总线程数达到上限, 会调用RejectHandler进行处理, 默认为AbortPolicy, 抛出RejectedExecutionException异常. 其他可选的Policy包括静默放弃当前任务(Discard),或由主线程来直接执行(CallerRuns).
3. minSize以上, maxSize以下的线程, 如果在keepAliveTime中都poll不到任务执行将会被结束掉, keeAliveTimeJDK默认为10秒. JDK默认值60秒太高,如高达1000线程时,要低于16QPS时才会开始回收线程, 因此改为默认10秒.
| 构造器和说明 |
|---|
CachedThreadPoolBuilder() |
| 限定符和类型 | 方法和说明 |
|---|---|
ThreadPoolExecutor |
build() |
ThreadPoolBuilder.CachedThreadPoolBuilder |
setDaemon(Boolean daemon)
与threadFactory互斥, 优先使用ThreadFactory
默认为NULL,不进行设置,使用JDK的默认值.
|
ThreadPoolBuilder.CachedThreadPoolBuilder |
setKeepAliveSecs(int keepAliveSecs)
JDK默认值60秒太高,如高达1000线程时,要低于16QPS时才会开始回收线程, 因此改为默认10秒.
|
ThreadPoolBuilder.CachedThreadPoolBuilder |
setMaxSize(int maxSize)
Max默认Integer.MAX_VALUE的,建议设置
|
ThreadPoolBuilder.CachedThreadPoolBuilder |
setMinSize(int minSize) |
ThreadPoolBuilder.CachedThreadPoolBuilder |
setRejectHanlder(RejectedExecutionHandler rejectHandler) |
ThreadPoolBuilder.CachedThreadPoolBuilder |
setThreadFactory(ThreadFactory threadFactory)
与threadNamePrefix互斥, 优先使用ThreadFactory
|
ThreadPoolBuilder.CachedThreadPoolBuilder |
setThreadNamePrefix(String threadNamePrefix)
与threadFactory互斥, 优先使用ThreadFactory
|
public ThreadPoolBuilder.CachedThreadPoolBuilder setMinSize(int minSize)
public ThreadPoolBuilder.CachedThreadPoolBuilder setMaxSize(int maxSize)
public ThreadPoolBuilder.CachedThreadPoolBuilder setKeepAliveSecs(int keepAliveSecs)
public ThreadPoolBuilder.CachedThreadPoolBuilder setThreadFactory(ThreadFactory threadFactory)
public ThreadPoolBuilder.CachedThreadPoolBuilder setThreadNamePrefix(String threadNamePrefix)
public ThreadPoolBuilder.CachedThreadPoolBuilder setDaemon(Boolean daemon)
默认为NULL,不进行设置,使用JDK的默认值.
public ThreadPoolBuilder.CachedThreadPoolBuilder setRejectHanlder(RejectedExecutionHandler rejectHandler)
public ThreadPoolExecutor build()
Copyright © 2019. All rights reserved.