线程池的底层实现你了解吗?线程池模块总结【上篇】
大家好,这是一个为了梦想而保持学习的博客。这是第四篇文章,分享一下我对【线程池】的理解。 文章的风格会一直保持问答的方式讲述,这是我个人喜欢的一种风格,也是相当于模拟面试。 线程池的核心理念是什么? 由我的第一篇关于 线程 的文章中提到的,我们服务器的线程资源是宝贵且有限的,因此我们在某些场景下需要尽可能的复用线程,不让线程频繁的创建与销毁。因此就引出了我们线程池的第一个核心理念: 线程资源复用 。 那么除开线程资源复用之外,我们还希望能对线程资源的使用情况进行一些控制,例如最少要有几个线程在跑,最多能创建多少个线程。那么就引出了我们线程池第二个核心理念: 线程资源控制 。 线程池的核心功能是如何实现的呢? 线程资源复用的实现原理 为了彻底了解线程池的工作原理,肯定是要从源码开始说起的。本文选取的核心类是ThreadPoolExecutor,这个也是《Java并发编程之美》书中用来讲解的类。首先我们从核心函数 void execute(Runnable command) 开始看起。 下面的源码看起来实在枯燥,我还是在最前面先概述一下原理,让读者能有个大概印象,然后画图阐述下具体执行流程。至于下面的代码块,可以在各位读者阅读源码的时候,再来结合这里的说明进行理解。 线程池对核心线程的复用,主要是通过内部Worker线程+生产者消费者模式去实现的