zoukankan      html  css  js  c++  java
  • 线程核心参数? 如何合理配置线程池参数?

    线程池的核心参数

    • corePoolSize(核心线程数)

      (1)核心线程会一直存在,即使没有任务执行; (2)当线程数小于核心线程数的时候,即使有空闲线程,也会一直创建线程直到达到核心线程数;
      (3)设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭。

    • queueCapacity(任务队列容量)

      也叫阻塞队列,当核心线程都在运行,此时再有任务进来,会进入任务队列,排队等待线程执行。

    • maxPoolSize(最大线程数)

      (1)线程池里允许存在的最大线程数量;
      (2)当任务队列已满,且线程数量大于等于核心线程数时,会创建新的线程执行任务;
      (3)线程池里允许存在的最大线程数量。当任务队列已满,且线程数量大于等于核心线程数时,会创建新的线程执行任务。

    • keepAliveTime(线程空闲时间)

      (1)当线程空闲时间达到keepAliveTime时,线程会退出(关闭),直到线程数等于核心线程数;
      (2)如果设置了allowCoreThreadTimeout=true,则线程会退出直到线程数等于零。

    • allowCoreThreadTimeout(允许核心线程超时)

    • rejectedExecutionHandler(任务拒绝处理器)

      (1)当线程数量达到最大线程数,且任务队列已满时,会拒绝任务;
      (2)调用线程池shutdown()方法后,会等待执行完线程池的任务之后,再shutdown()。如果在调用了shutdown()方法和线程池真正shutdown()之间提交任务,会拒绝新任务。

    线程池任务调度

    在这里插入图片描述

    推荐配置

    默认配置
    corePoolSize = 1
    queueCapacity = Integer.MAX_VALUE
    maxPoolSize = Integer.MAX_VALUE
    keepAliveTime = 60秒
    allowCoreThreadTimeout = false
    rejectedExecutionHandler = AbortPolicy()
    
    个性配置

    corePoolSize 建议值为:每秒任务数*任务执行时间(例如0.5s) 【100 * 0.2=20】
    maxPoolSize 建议和corePoolSize 配置一样、有同学建议直接设置为cpu数量+1
    keepAliveTiime 设定值可根据任务峰值持续时间来设定。
    其余配置可以走默认值,也可根据情况配置

  • 相关阅读:
    用C#生成足够随机的互不相同的随机数
    CRM
    Asp.net2.0部署时TreeView控件无法正常显示没有图片的问题
    javascript解析json
    jQuery插件倒计时。
    ASP.NET MVC + jQuery + Newtonsoft.Json 快乐的AJAX
    .NET中DataSet转化Json工具类
    jQuery load html
    jQuery 使用注意点技巧1
    WEB页面多语言支持解决方案
  • 原文地址:https://www.cnblogs.com/inyu/p/13659067.html
Copyright © 2011-2022 走看看