线程-线程池

作者: go_2021 | 来源:发表于2022-02-01 12:29 被阅读0次

    耐心是一切聪明才智的基础。

    什么是线程池? 为什么要使用它?
    • 线程复用 避免线程的创建销毁的系统开销
    • 线程数量控制 避免线程不断膨胀 导致系统崩溃
    • 任务管理 任务 异步执行
    核心参数
    • 核心线程数 prestartAllCoreThreads 可以在初始化时候全部创建。
    • 最大线程数 和核心数一致 时线程数量固定 存活时间没有意义
    • 闲置线程存活时间
    • 时间单位
    • 线程队列
      • 直接队列 SynchronousQueue 跟没有一样。。
      • 无限队列 LinkedBlockingQueue 可指定也可不指定。
      • 有限队列 ArrayBlockingQueue 初始化指定大小。
      • 延迟队列DelayQueue,根据aqs.reentranlock.condition实现的await,signal机制实现。
    • 线程工厂
    • 拒绝策略
      • 丢弃&异常(主线程停止)
      • 丢弃&不抛异常
      • 丢弃队列中任务,重试
      • 重试,不断重试
    任务的执行流程
    image.png
    有哪些状态

    https://www.jianshu.com/p/c22fa33a4213

    image.png
    有意思的实现
    • 一个变量代表多个意思
      线程池 用线程安全 atomicInteger ctl 来表示
      线程池的状态 以及 线程的数量
      高3位保存runState,低29位保存workerCount
    Java中的fork join框架
    image.png

    相关文章

      网友评论

        本文标题:线程-线程池

        本文链接:https://www.haomeiwen.com/subject/zgchkrtx.html