• ThreadPoolExecutor和Executors的区别


    Executors创建的线程有两类

    • newFixedThreadPool和newSingleThreadExecutor,队列数量弹性,创建的线程的队列最大值为INTEGER.max容易造成OOM
    • newCachedThreadPool和newScheduledThreadPool,线程数量弹性,创建的线程数量最大值为INTEGER.max容易造成OOM

    ThreadPoolExecutor的构造方法参数

    可以定制你需要的线程池参数:

    • corepoolsize 最小线程数,一般设置为服务器核心数量
    • maxpoolsiz 最大线程数,当队列满后会扩容到最大线程数
    • keepalivetime 当线程池中线程数大于corepoolsize 并且无新增任务时,销毁等待的最大时间。
    • unit 销毁时间单位
    • workQueue 工作队列
    • handler 饱和策略。当现在同时进行的任务数量大于最大线程数量并且队列也已经放满后,线程池采取的一些策略
      • AbortPolicy直接抛出异常,RejectedExecutionException.
      • CallerRunsPolicy ,调用执行自己的线程来完成任务,当您的任务不能抛弃时采取这个策略,这个策略会给系统带来额外的开销,影响性能。
      • DiscardPolicy 直接抛弃掉
      • DiscardOldestPolicy 丢弃掉最老的任务。

    execute流程

    execute流程

    流程说明

    • 这里注意一点只有等待队列里放满后,核心线程数才会逐步增加到最大线程数。
    • 流程就按照图中的处理机制,就不加以详细说明了,有何问题欢迎留言。
    定位问题原因* 根据原因思考问题解决方案* 实践验证方案有效性* 提交验证结果
  • 相关阅读:
    Luogu P1004 方格取数
    Luogu P1896 [SCOI2005]互不侵犯
    Luogu P1879 [USACO06NOV]玉米田Corn Fields 【状压dp模板】
    高精度模板(结构体)
    【模板】快读
    vue input框type=number 保留两位小数自定义组件
    elementui表格表头合并
    将excle表中得数据生成insert语句插入到数据库中
    数据库基本语法
    ztree 数组和树结构互转算法
  • 原文地址:https://www.cnblogs.com/jimoliunian/p/12792076.html
Copyright © 2020-2023  润新知