• 线程池(ThreadPoolExcutor)基本介绍


    线程池:ThreadPoolExecutor

    不做过多介绍了,java源码中有详细英文介绍

    构造函数:

        public ThreadPoolExecutor(int corePoolSize,
                                  int maximumPoolSize,
                                  long keepAliveTime,
                                  TimeUnit unit,
                                  BlockingQueue<Runnable> workQueue,
                                  ThreadFactory threadFactory,
                                  RejectedExecutionHandler handler)
    

    七大参数基本介绍:

    *   corePoolSize:核心线程数[一直存在,除非allowCoreThreadTimeOut],创建好了就一直存在,等待接受任务去执行
    *   maximumPoolSize:最大线程数量;控制资源
    *   keepAliveTime:存活时间,如果当前正在运行的线程数量大于核心数量。
    *                  可以释放空闲线程(maximumPoolSize-corePoolSize)(线程空闲时间大于指定的keepAliveTime)
    *   unit:时间单位
    *   workQueue:阻塞队列,如果任务有很多,就将目前多的任务放在队列中
    *                      只要有线程空闲,就会去队列中取出新的任务去执行
    *   threadFactory:线程的创建工厂
    *   handler:如果当前阻塞队列满了,就会执行该策略拒绝任务
    

    线程池工作顺序:

    *   1)线程池创建,准备好核心线程,准备接收任务
    *   1.1 core满了,就将进来的任务放在阻塞队列中,空闲的core就会自己去阻塞队列中获取执行
    *   1.2 阻塞队列满了,就直接开启新线程执行,最大只能开启到maximumPoolSize的线程数目
    *   1.3 maximumPoolSize满了,就采用handler去拒绝任务
    *   1.4 maximumPoolSize都执行完成,就会有很多的线程空闲,在指定的时间keepAliveTime以后,释放maximumPoolSize-corePoolSize这些线程
    

    常见四种线程池:

             *  newCachedThreadPool:创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收线程,若无可回收,则新建线程
             *  newFixedThreadPool:创建一个定长线程池,可控制最大并发数
             *  newScheduledThreadPool:创建一个定长线程池,支持定时及周期性任务执行
             *  newSingleThreadExecutor:创建一个单线程化的线程池,只有唯一一个线程来执行任务
    

    基本使用:

    一般来说ExecutorService的创建,不会写在业务方法中。

    public static ExecutorService service = Executors.newFixedThreadPool(10);
    service.execute(() -> {});
    
  • 相关阅读:
    eclipse历史版本下载地址
    注解@SuppressWarnings
    VB创建文件夹
    VB学习生成JavaBean
    C++下的强制转换类型
    Django扩展
    数据查询操作
    深入剖析C++多态、VPTR指针、虚函数表
    快速排序一步一步优化
    cookie与session
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/13945280.html
Copyright © 2020-2023  润新知