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. 提高线程的可管理性
  • 相关阅读:
    mysql 常用函数
    JSP 分页代码
    day15(Mysql学习)
    day14(编码实战-用户登录注册)
    Bootstrap第3天
    Bootstrap第2天
    Bootstrap 第一天
    day13(JSTL和自定义标签&MVC模型&javaweb三层框架)
    label 对齐
    Alert提示框之后跳转指定页面
  • 原文地址:https://www.cnblogs.com/bigdig/p/13896381.html
Copyright © 2011-2022 走看看