美文网首页
ThreadPoolExecutor(线程池)

ThreadPoolExecutor(线程池)

作者: 某某程序员_ | 来源:发表于2020-02-14 11:19 被阅读0次

    1. 参数详解

    corePoolSize

    核心线程数,初始化时创建的线程数

    maximumPoolSize

    最大线程数,当核心线程和队列占满时,会扩展线程数直到maximumPoolSize所定义的最大值。

    keepAliveTime

    扩展线程(核心线程数不够时,所新增的线程)最大空闲时间值

    unit

    扩展线程空闲时间单位(天,时,分,秒,毫秒,微秒,纳秒)

    workQueue

    工作队列,当核心线程占满时,多余的任务放进阻塞队列里面,在线程空闲之后执行队列里面的任务。

    threadFactory

    创建线程的工厂,可以扩展一些当前线程池需要的功能

    handler

    拒绝处理器,定义了当线程以及队列都占满时,后续任务拒绝处理策略。

    2. 运行机制

    1. 初始化时,会创建corePoolSize个核心线程数。
    2. 当核心线程占满时,后续任务会放进工作队列workQueue里面
    3. 当核心线程和工作队列都占满时,如果maximumPoolSize>corePoolSize,并且还有新任务时,创建新的线程,直到线程数等于最大值maximumPoolSize。
    4. 当线程数等于maximumPoolSize且都占满,同时队列也占满。表示当前线程池已经处理不了后续的任务了,此时后续任务会进行拒绝处理。即走handler处理器的逻辑。
    5. 当任务量下降时,队列里面的任务会依次执行,当任务执行完之后。扩展的线程在keepAliveTime时间内没有执行新的任务即可进行回收,释放多余的资源。

    相关文章

      网友评论

          本文标题:ThreadPoolExecutor(线程池)

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