博客
关于我
线程池源码解析 2.工作原理与内部结构
阅读量:796 次
发布时间:2023-03-25

本文共 1071 字,大约阅读时间需要 3 分钟。

线程池源码解析——工作原理与内部结构

工作原理

概述

线程池是Java中用于管理线程的重要工具,它通过单个线程执行多个并发任务,减少线程创建和销毁的开销。线程池本质上是一个线程的池子,能够高效地处理大量的并发任务。

线程池状态

线程池有五种状态:运行(RUNNING)、关闭(SHUTDOWN)、停止(STOP)、整理(TIDYING)和终止(TERMINATED)。每种状态都有不同的处理逻辑,代码中需要进行大量的状态判断来管理线程池的运行。

拒绝策略

在线程池中,当提交的任务无法被线程池处理时,会使用拒绝策略来决定任务的去向。JDK提供了四种默认的拒绝策略,其中最常用的是AbortPolicy,它会直接抛出异常。开发者也可以根据需求自定义拒绝策略。

线程池拒绝策略接口

public interface RejectedExecutionHandler {
void rejectedExecution(Runnable r, ThreadPoolExecutor executor);
}

ThreadPoolExecutor 内部结构

核心属性之 ctl

ctl是一个AtomicInteger,用于记录线程池的运行状态和当前线程数量。它的高3位表示线程池的状态,低29位表示当前线程数量。

核心属性

  • mainLock:线程池全局锁,用于处理线程池状态修改和线程创建/销毁。
  • workers:存储线程池中的工作者线程。
  • termination:条件队列,用于等待线程池终止。
  • completedTaskCount:记录线程池完成的任务总数。
  • keepAliveTime:空闲线程存活时间。
  • allowCoreThreadTimeOut:控制核心线程是否可以被回收。
  • corePoolSize:核心线程数。
  • maximumPoolSize:线程池的最大线程数。

核心成员属性

Worker类

线程池中的每个工作者线程都实现了Runnable接口,并继承自AbstractQueuedSynchronizer,采用独占锁机制。Worker类负责执行任务和管理线程。

构造方法

线程池的构造方法接受七大核心参数:核心线程数、最大线程数、空闲线程存活时间、时间单位、任务队列、线程工厂和拒绝策略。

总结

线程池通过管理线程的生命周期,实现了高效的任务执行。其工作原理包括状态管理、任务队列处理和拒绝策略。内部结构包括核心属性、工作者线程和构造方法等关键组件。理解线程池的工作原理和内部结构,有助于更好地利用多核环境,提升应用性能。

转载地址:http://ukhfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现Exceeding words超词(差距是ascii码的距离) 算法(附完整源码)
查看>>
Objective-C实现extended euclidean algorithm扩展欧几里得算法(附完整源码)
查看>>
Objective-C实现Factorial digit sum阶乘数字和算法(附完整源码)
查看>>
Objective-C实现factorial iterative阶乘迭代算法(附完整源码)
查看>>
Objective-C实现factorial recursive阶乘递归算法(附完整源码)
查看>>
Objective-C实现FigurateNumber垛积数算法(附完整源码)
查看>>
Objective-C实现Gale-Shapley盖尔-沙普利算法(附完整源码)
查看>>
Objective-C实现hamiltonianCycle哈密尔顿图算法(附完整源码)
查看>>
Objective-C实现hamming numbers汉明数算法(附完整源码)
查看>>
Objective-C实现hanning 窗(附完整源码)
查看>>
Objective-C实现hanoiTower汉诺塔算法(附完整源码)
查看>>
Objective-C实现hardy ramanujana定理算法(附完整源码)
查看>>
Objective-C实现highest response ratio next高响应比优先调度算法(附完整源码)
查看>>
Objective-C实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)
查看>>
Objective-C实现hornerMethod霍纳法算法(附完整源码)
查看>>
Objective-C实现Http Post请求(附完整源码)
查看>>
Objective-C实现Http协议下载文件(附完整源码)
查看>>
Objective-C实现IIR 滤波器算法(附完整源码)
查看>>
Objective-C实现IIR数字滤波器(附完整源码)
查看>>
Objective-C实现insertion sort插入排序算法(附完整源码)
查看>>