美文网首页
线程池参数小记

线程池参数小记

作者: sleep_NULL | 来源:发表于2019-05-06 13:17 被阅读0次
// 核心线程数,线程池默认可以常驻的线程池数
int corePoolSize
// 最大线程数,在线程数 >= corePoolSize 且 workQueue 满的情况下会才会进行线程的创建
int maximumPoolSize
// 默认是非核心线程的最大 idle 时间,如果设置allowCoreThreadTimeOut 为 true 则核心线程也会受到影响
long keepAliveTime, TimeUnit unit
// 任务等待队列
BlockingQueue<Runnable> workQueue,
// 线程工厂,可以自定义线程创建的逻辑
ThreadFactory threadFactory
// 拒绝执行的策略,在线程数 = maximumPoolSize 且队列已满的情况下,新任务的提交将会被拒绝,拒绝将调用 handler 的方法
RejectedExecutionHandler handler

任务提交到线程池中的几种情况

  1. 当前线程数 < corePoolSize 会进行线程创建,并将此任务作为该线程的初始任务
  2. 当前线程数 = corePoolSize,且任务队列未满,放入队列中
  3. 当前线程数 >= corePoolSize 且 < maximumPoolSize 且任务队列已满,将创建新的非核心线程
  4. 当前线程数已满且队列已满则调用 RejectedExecutionHandler 进行拒绝处理

常态下,在线程达到 core size 之后都是通过 queue 进行任务的提交,queue 的 size 直接反应了当前线程池的任务堆积情况,是线程池处理能力的关键指标,同时线程池的 active count 是指当前线程池的活跃线程数,也同样是关键的性能指标,如有需要可以考虑进行相应的指标监控告警,通常情况下一般会将 core size 与 max size 设置为同一值,java 的线程与操作系统层面的线程一一映射,开销较大,创建销毁的代价比较高,更倾向于基于业务体量合理进行 core size 与 queue size 的配置,而非依赖 max size 进行补救

相关文章

  • 线程池参数小记

    任务提交到线程池中的几种情况 当前线程数 < corePoolSize 会进行线程创建,并将此任务作为该线程的初始...

  • Java线程总结 之 ThreadPool 线程池

    线程脑图 ThreadPool 线程池 线程池的构造参数 ----------------------------...

  • java基础-多线程

    java线程池的实现 ThreadPoolExecutor java线程池几个参数 corePoolSize当线程...

  • 线程池知识个人总结及源码分析

    1 ThreadPoolExecutor 该线程池是比较常用的线程池。参数如下: 参数名解释corePoolSiz...

  • 线程池核心参数

    线程池核心参数 1)corePoolSize(线程池基本大小) 2)maximumPoolSize(线程池最大数量...

  • ThreadPool

    线程池核心参数 corePoolSize: int 核心线程数 线程池初始化后,线程池中没有任何线程,线程池会等待...

  • Android 线程池原理

    线程池核心类 : ThreadPoolExecutor:提供了一系列参数来配置线程池 线程池优点: 1.重用线程池...

  • 线程池概述

    为什么要使用线程池? 线程池核心参数 线程池的几种拒绝策略 execute()和submit()的区别 线程池工作...

  • 实战! 多线程线程池分析

    一 项目线程池运用 二 线程池代码分析 线程池参数这里面的参数分别为初始线程数3,最大线程数6,线程存活时间0毫秒...

  • 线程池初探

    线程池架构图 线程池状态流转图 线程池主要参数介绍 corePoolSize: 核心线程数量 maximumPoo...

网友评论

      本文标题:线程池参数小记

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