Java1.5的java.util.concurrent
包封装了一系列异步处理操作的工具,简化了多线程程序的开发。其中一个重要的工具类就是Executors。
通过他提供的工厂方法我们可以很方便的就生成线程池的实例,例如获取一个固定线程池大小的实例只需要调用Executors.newFixedThreadPool(MAX_THREAD_COUNT)
,其中MAX_THREAD_COUNT
就是我们需要的线程池大小。这个方法其实是生成了一个ThreadPool的实例
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}
再看看ThreadPoolExecutor的完整构造方法
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler) {
if (corePoolSize < 0 ||
maximumPoolSize <= 0 ||
maximumPoolSize < corePoolSize ||
keepAliveTime < 0)