赞
踩
FixedThreadPool是可重用固定线程数的线程池。
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}
corePoolSize和maximumPoolSize都设置为创建FixedThreadPool指定的参数nThreads,即FixedThreadPool只有核心线程,且数量固定,没有非核心线程。keepAliveTime设置为0L,代表多余的线程会被立即终止。因为不会产生多余的线程,所以keepAliveTime是无效的参数;任务队列采用了无界的阻塞队列LinkedBlockingQueue(容量默认为Integer.MAX_VALUE)。
当执行execute方法时,若当前运行的线程未达到核心线程数corePoolSize,就创建核心线程处理任务;否则,就把任务添加到LinkedBlockingQueue中。
FixedThreadPool是一个有固定核心线程数的线程池,且这些核心线程不会被回收。当线程数超过corePoolSize时,就把任务存进任务队列。若线程池有空闲线程,就去任务队列中取任务。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。