• 技术文章 >java >java基础

    ThreadPoolExecutor在java中创建线程池

    小妮浅浅小妮浅浅2021-01-11 13:45:42原创2827

    在讲过线程池的一些好处后,接下来我们要对线程池进行创建,在开始之前需要学习一些创建时会用到的参数,这里以ThreadPoolExecutor的方法为例。对于七中的参数属性概念和用法做一个简单的介绍,在全部掌握这些参数的用法后,进一步在实例中展示ThreadPoolExecutor创建线程池的方法。

    1.创建参数

    线程池可以自动创建也可以手动创建,手动创建体现在可以灵活设置线程池的各个参数。

    corePoolSize:线程池的核心线程数,说白了就是,即便是线程池里没有任何任务,也会有corePoolSize个线程在候着等任务。

    maximumPoolSize:线程数,不管你提交多少任务,线程池里最多工作线程数就是maximumPoolSize。

    keepAliveTime:线程的存活时间。当线程池里的线程数大于corePoolSize时,如果等了keepAliveTime时长还没有任务可执行,则线程退出。

    unit:这个用来指定keepAliveTime的单位,比如秒:TimeUnit.SECONDS。

    七种静态属性

    TimeUnit.DAYS;               //天
    TimeUnit.HOURS;             //小时
    TimeUnit.MINUTES;           //分钟
    TimeUnit.SECONDS;           //秒
    TimeUnit.MILLISECONDS;      //毫秒
    TimeUnit.MICROSECONDS;      //微妙
    TimeUnit.NANOSECONDS;       //纳秒

    workQueue:一个阻塞队列,提交的任务将会被放到这个队列里:

    ArrayBlockingQueue;

    LinkedBlockingQueue;

    SynchronousQueue;

    threadFactory:线程工厂,用来创建线程,主要是为了给线程起名字,默认工厂的线程名字:pool-1-thread-3。

    handler:拒绝策略,当线程池里线程被耗尽,且队列也满了的时候会调用。

    2.创建实例

    public ThreadPoolExecutor(int corePoolSize,
                                  int maximumPoolSize,
                                  long keepAliveTime,
                                  TimeUnit unit,
                                  BlockingQueue<Runnable> workQueue) {
            this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
                 Executors.defaultThreadFactory(), defaultHandler);
    }

    以上就是ThreadPoolExecutor在java中创建线程池的方法,需要对基本的参数用法有所掌握,学会后就可以对创建线程的代码部分进行试验了,检验我们的线程学习成果。

    专题推荐:java threadpoolexecutor
    上一篇:java中关闭ExecutorService 下一篇:java线程池的运行流程

    相关文章推荐

    • java threadLocal源码探究• java中executor是什么意思• java executor框架的应用• java中ExecutorService有几种创建方法• java中关闭ExecutorService

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网