public static class ThreadPoolBuilder.FixedThreadPoolBuilder extends Object
1. 任务提交时, 如果线程数还没达到poolSize即创建新线程并绑定任务(即poolSize次提交后线程总数必达到poolSize,不会重用之前的线程)
poolSize默认为1,即singleThreadPool.
2. 第poolSize次任务提交后, 新增任务放入Queue中, Pool中的所有线程从Queue中take任务执行.
Queue默认为无限长的LinkedBlockingQueue, 但建议设置queueSize换成有界的队列.
如果使用有界队列, 当队列满了之后,会调用RejectHandler进行处理, 默认为AbortPolicy,抛出RejectedExecutionException异常. 其他可选的Policy包括静默放弃当前任务(Discard),放弃Queue里最老的任务(DisacardOldest),或由主线程来直接执行(CallerRuns).
3. 因为线程全部为core线程,所以不会在空闲时回收.
| 构造器和说明 |
|---|
FixedThreadPoolBuilder() |
| 限定符和类型 | 方法和说明 |
|---|---|
ThreadPoolExecutor |
build() |
ThreadPoolBuilder.FixedThreadPoolBuilder |
setDaemon(Boolean daemon)
与threadFactory互斥, 优先使用ThreadFactory
默认为NULL,不进行设置,使用JDK的默认值.
|
ThreadPoolBuilder.FixedThreadPoolBuilder |
setPoolSize(int poolSize)
Pool大小,默认为1,即singleThreadPool
|
ThreadPoolBuilder.FixedThreadPoolBuilder |
setQueueSize(int queueSize)
不设置时默认为-1, 使用无限长的LinkedBlockingQueue.
|
ThreadPoolBuilder.FixedThreadPoolBuilder |
setRejectHanlder(RejectedExecutionHandler rejectHandler) |
ThreadPoolBuilder.FixedThreadPoolBuilder |
setThreadFactory(ThreadFactory threadFactory)
与threadNamePrefix互斥, 优先使用ThreadFactory
|
ThreadPoolBuilder.FixedThreadPoolBuilder |
setThreadNamePrefix(String threadNamePrefix)
与ThreadFactory互斥, 优先使用ThreadFactory
|
public ThreadPoolBuilder.FixedThreadPoolBuilder setPoolSize(int poolSize)
public ThreadPoolBuilder.FixedThreadPoolBuilder setQueueSize(int queueSize)
为正数时使用ArrayBlockingQueue.
public ThreadPoolBuilder.FixedThreadPoolBuilder setThreadFactory(ThreadFactory threadFactory)
public ThreadPoolBuilder.FixedThreadPoolBuilder setThreadNamePrefix(String threadNamePrefix)
public ThreadPoolBuilder.FixedThreadPoolBuilder setDaemon(Boolean daemon)
默认为NULL,不进行设置,使用JDK的默认值.
public ThreadPoolBuilder.FixedThreadPoolBuilder setRejectHanlder(RejectedExecutionHandler rejectHandler)
public ThreadPoolExecutor build()
Copyright © 2019. All rights reserved.