线程池七大参数

  • corePoolSize:线程池中常驻核心线程数

  • maximumPoolSize:线程池能够容纳同时执行的最大线程数

  • keepAliveTime:多余的空闲线程存活时间

  • unit:keepAliveTime的时间单位

  • workQueue:任务队列,被提交但尚未执行的任务

    • ArrayBlockingQueue:是一个基于数组结构的有界阻塞队列,此队列按 FIFO(先进先出)原则对元素进行排序
    • LinkedBlockingQueue:一个基于链表结构的阻塞队列,此队列按FIFO (先进先出) 排序元素,吞吐量通常要高于ArrayBlockingQueue。静态工厂方法Executors.‎newFixedThreadPool()‎使用了这个队列
    • SynchronousQueue:一个不存储元素的阻塞队列。每个插入操作必须等到另一个线程调用移除操作,否则插入操作一直处于阻塞状态,吞吐量通常要高于LinkedBlockingQueue,静态工厂方法Executors.newCachedThreadPool(5)使用了这个队列。
    • PriorityBlockingQueue:一个具有优先级的无限阻塞队列
  • threadFactory:表示生成线程池中的工作线程的线程工厂

  • handler:拒绝策略,表示当队列满了并且工作线程大于等于线程池的最大线程数(maximumPoolSize)时如何拒绝。

    • AbortPolicy(被拒绝了抛出异常)
    • CallerRunsPolicy(使用调用者所在线程执行,就是哪里来的回哪里去)
    • DiscardOldestPolicy(尝试去竞争第一个,失败了也不抛异常)
    • DiscardPolicy(默默丢弃、不抛异常)
posted @ 2021-11-29 21:26  Lucky_龍  阅读(160)  评论(0)    收藏  举报