zoukankan      html  css  js  c++  java
  • 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流程

    流程说明

    • 这里注意一点只有等待队列里放满后,核心线程数才会逐步增加到最大线程数。
    • 流程就按照图中的处理机制,就不加以详细说明了,有何问题欢迎留言。
    定位问题原因* 根据原因思考问题解决方案* 实践验证方案有效性* 提交验证结果
  • 相关阅读:
    beego——过滤器
    beego——session控制
    Differentiation 导数和变化率
    验证码识别
    pip 下载慢
    ORB
    决策树
    机器学习第二章 配对网站
    K-近邻算法
    ubuntu下安装配置OpenCV
  • 原文地址:https://www.cnblogs.com/jimoliunian/p/12792076.html
Copyright © 2011-2022 走看看