
随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力。所以,多线程技术是服务端开发人员必须掌握的技术。
线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁。
在Java中有一个Executors工具类,可以为我们创建一个线程池,其本质就是new了一个ThreadPoolExecutor对象。线程池几乎也是面试必考问题。本节结合源代码,说说ThreadExecutor的工作原理
一、线程池创建
先看一下ThreadPoolExecutor参数最全的构造方法:

-
corePoolSize:线程池的核心线程数,说白了就是,即便是线程池里没有任何任务,也会有corePoolSize个线程在候着等任务。
-
maximumPoolSize:最大线程数,不管你提交多少任务,线程池里最多工作线程数就是maximumPoolSize。
-
keepAliveTime:线程的存活时间。当线程池里的线程数大于corePoolSize时,如果等了keepAliveTime时长还没有任务可执行,则线程退出。
-
unit:这个用来指定keepAliveTime的单位,比如秒:TimeUnit.SECONDS。
-
workQueue:一个阻塞队列,提交的任

本文详细解读了Java中的ThreadPoolExecutor工作原理,包括参数理解、线程池创建流程、执行流程以及源代码剖析。重点介绍了线程池的创建参数、执行步骤和关键方法如addWorker和runWorker的实现。
最低0.47元/天 解锁文章
920

被折叠的 条评论
为什么被折叠?



