线程池的种类

作者: 姜小码 | 来源:发表于2017-03-17 01:01 被阅读545次

线程池的种类

之前说过ThreadPoolExecutor的用法,jdkExecutors包下还封装了一些其他类型的线程池。

newFixedThreadPool

public static ExecutorService newFixedThreadPool(int nThreads) {
        return new ThreadPoolExecutor(nThreads, nThreads,
                                      0L, TimeUnit.MILLISECONDS,
                                      new LinkedBlockingQueue<Runnable>());
    }

顾名思义,就是创建线程数量固定的线程池,线程池的corePoolSizemaximumPoolSize大小一样,并且keepAliveTime为0,传入的队列LinkedBlockingQueue为无界队列。在说ThreadPoolExecutor的时候也说过,传入一个无界队列,maximumPoolSize参数是不起作用的。

newSingleThreadExecutor

public static ExecutorService newSingleThreadExecutor() {
        return new FinalizableDelegatedExecutorService
            (new ThreadPoolExecutor(1, 1,
                                    0L, TimeUnit.MILLISECONDS,
                                    new LinkedBlockingQueue<Runnable>()));
    }

从代码中也能看得出来,corePoolSizemaximumPoolSize都是1,keepAliveTime是0L, 传入的队列是无界队列。线程池中永远只要一个线程在工作。

newCachedThreadPool

public static ExecutorService newCachedThreadPool() {
        return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                      60L, TimeUnit.SECONDS,
                                      new SynchronousQueue<Runnable>());
    }

可缓存线程池,说道缓存一般离不开过期时间,该线程池也是,corePoolSize设置为0,maximumPoolSize设置为int最大值,不同的是,线程池传入的队列是SynchronousQueue,一个同步队列,该队列没有任何容量,每次插入新数据,必须等待消费完成。当有新任务到达时,线程池没有线程则创建线程处理,处理完成后该线程缓存60秒,过期后回收,线程过期前有新任务到达时,则使用缓存的线程来处理。

newScheduledThreadPool

public static ScheduledExecutorService newScheduledThreadPool(
            int corePoolSize, ThreadFactory threadFactory) {
        return new ScheduledThreadPoolExecutor(corePoolSize, threadFactory);
    }

这个线程池使用了ScheduledThreadPoolExecutor,该线程池继承自ThreadPoolExecutor, 执行任务的时候可以指定延迟多少时间执行,或者周期性执行。

相关文章

  • java线程池及使用场景

    线程池的种类以及使用场景 五种线程池 JUCnewSingleThreadPoolnewFixedThreadPo...

  • 线程池

    线程池种类 ThreadPoolExecutor 基础线程池 线程执行任务过程 当前执行线程数 < corePoo...

  • java JDK并发包-线程池

    1.线程池种类 1).newFixedThreadPool //固定大小线程池 2).newSingleThr...

  • 线程池

    目录: 1.线程池的作用2.线程池的种类3.线程池的使用 线程池的作用: 线程主要是通过控制执行的线程的数量,超出...

  • 线程池的种类

    线程池的种类 之前说过ThreadPoolExecutor的用法,jdkExecutors包下还封装了一些其他类型...

  • J.U.C——线程池专题

    主要讨论以下问题: 认识Java线程池 线程池的种类,区别,和使用场景 线程池的工作流程 线程池几个参数的理解 分...

  • Java线程池

    1. Java线程池的种类 基本: ThreadPoolExecutor CachedThreadPool: 线程...

  • ThreadPoolExecutor配置细节

    在Android中,线程池的概念来源于Java,主要是通过Executor来派生特定类型的线程池,不同种类的线程池...

  • Java 线程池种类

    线程池主要用于管理、调度线程任务,避免我们存在大量的new Thread().start()。等等内嵌的写法,而且...

  • Java线程池种类

    1、newCachedThreadPool作用:创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将...

网友评论

  • 竹雨安安:你这代码框是怎么实现的,简书写作上好像并没有这种吧
    姜小码:@竹雨安安 在设置里,可以制定默认编辑器
    竹雨安安:@姜小码 简书上没有markdown格式的呀
    姜小码:@竹雨安安 markdown格式写的

本文标题:线程池的种类

本文链接:https://www.haomeiwen.com/subject/mzvsnttx.html