Java中如何去创建一个线程池?( 二 )


实现方式
newFixedThreadPool
当线程数达到了核心线程数之后,即使没有可以执行的任务,线程池也不会释放线程 。并且这个线程池采用了一个无界的队列,也就是说阻塞队列永远不会达到饱和 。
public static ExecutorService newFixedThreadPool(int nThreads) {return new ThreadPoolExecutor(nThreads, nThreads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue());
newSingleThreadExecutor
初始化线程池中只有一个线程执行任务,如果这个线程因为异常而结束工作,则会重新创建一个新的线程来继续执行该任务,这个唯一线程的执行操作就可以保证所有的提交任务都是按照队列排序顺序执行 。
public static ExecutorService newSingleThreadExecutor() {return new FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1, 1,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue()));
newCachedThreadPool
这线程池的线程数可以达到Integer.MAX_VALUE值,并且内部使用了SynchronousQueue队列来作为阻塞队列 。
public static ExecutorService newCachedThreadPool() {return new ThreadPoolExecutor(0, Integer.MAX_VALUE,60L, TimeUnit.SECONDS,new SynchronousQueue());总结
上面我们介绍了在Java中如何去创建一个线程池,并且介绍了创建线程池相关的核心参数 。在后续的分享中还会给大家详细介绍关于Java中线程池的使用,敬请期待




推荐阅读