Java线程工具类Executors四种线程池

1.newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

public static ExecutorService newCachedThreadPool() {

    return new ThreadPoolExecutor(0,//核心线程数为零

                                                         Integer.MAX_VALUE, //线程非核心数为MAX_VALUE =0x7fffffff(int最大值2147483647)

                                                         60L, //空闲线程存活时间

                                                        TimeUnit.SECONDS,//时间单位

                                                      new SynchronousQueue<Runnable>());//阻塞队列(SynchronousQueue内部没有任何存放元素的能力

}

2.newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

public static ExecutorService newFixedThreadPool(int nThreads) {

     return new ThreadPoolExecutor(nThreads,//核心线程数为零nThreads

                                                         nThreads,//线程非核心数为 nThreads/

                                                        0L, //没有过期时间

                                                        TimeUnit.MILLISECONDS,

                                                        new LinkedBlockingQueue<Runnable>());//链接队列默认长度为为MAX_VALUE =0x7fffffff(int最大值2147483647)

}

3newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

public static ExecutorService newSingleThreadExecutor() {

    return new FinalizableDelegatedExecutorService

                    (new ThreadPoolExecutor(1,//核心线程数为零1

                                                                1,//线程非核心数为 1

                                                                0L, //没有过期时间

                                                                TimeUnit.MILLISECONDS,

                                                                new LinkedBlockingQueue<Runnable>()));//链接队列默认长度为为MAX_VALUE =0x7fffffff

}

4.newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。

publicScheduledThreadPoolExecutor(int corePoolSize){super(corePoolSize,Integer.MAX_VALUE,0,NANOSECONDS,newDelayedWorkQueue());}

//核心线程数为零corePoolSize

//线程非核心数为MAX_VALUE =0x7fffffff(int最大值2147483647)

 //没有过期时间

//队列默认长度为16

主要是通过DelayedWorkQueue来实现的定时线程.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 10,948评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,513评论 1 3
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 130,252评论 2 7

友情链接更多精彩内容