zoukankan      html  css  js  c++  java
  • 线程池

    线程池知识点

    线程池的执行流程

    1. 接收到请求后首先判断核心线程有没有满;
    2. 如果核心线程没满的话,那么就创建一个线程处理请求;
    3. 如果核心线程满了的话,那么就看看阻塞队列是否已经满了;
    4. 如果阻塞队列没满的话就加入阻塞队列;
    5. 如果阻塞队列满了的话就判断最大线程数是否达到;
    6. 如果最大线程数没有达到的话,就创建一个线程去处理请求;
    7. 如果最大线程数已经达到的话,就执行拒绝策略;
    8. 当线程的空闲时间超过了存活时间的话,那么就把空闲线程销毁,保留核心线程数;

    合理配置线程池

    • CPU密集型,CPU密集型任务配置尽可能少的线程数量:一般公式:CPU核数+1个线程的线程池
    • IO密集型,I0密集型时,大部分线程都阻塞,故需要多配置线程数:参考公式:CPU核数11-阻塞系数 阻塞系数在0.8~0.9之间比如8核CPU:8/1-0.9=80个线程数

    拒绝策略

    • abortpolicy: 这种是直接抛出异常的形式
    • discard: 丢弃策略
    • discard: 丢弃等待时间最长的请求
    • callerruns: 这个是调用者执行策略;
    • 也可以自定义拒绝测略

    线程池的优势

    1. 降低资源消耗
    2. 提高响应速度
    3. 提高线程的可管理性
  • 相关阅读:
    如何判断点击是否在区域内
    WCF SSL(应用篇-Message)-02
    WCF SSL(证书篇)-01
    获取浏览客户的地址信息
    ASP.Net Controls 用法大全
    C#实现倒油算法
    C#操作Excel(读取)
    C#提取字符串中的数字字符串
    对比MFC和Winform及WPF
    C#图片水印代码整理
  • 原文地址:https://www.cnblogs.com/bigdig/p/13896381.html
Copyright © 2011-2022 走看看