因为上一章节篇幅有限,所以我决定把一文秒懂Java线程池拆分为三篇文章单独介绍。本章节,我们就来看看ThreadPoolExecutor。ThreadPoolExecutorThreadPoolExecutor是一个可被继承(extends)的线程池实现,包含了用于微调的许多参数和钩子。我们并不会讨论ThreadPoolExecutor类中的所有的参数和钩子,只会讨论几个主要的配置参数:corePoolSizemaximumPoolSizekeepAliveTimeThreadPoolExecutor创建的线程池由固定数量的核心线程组成,这些线程在ThreadPoolExecutor生命周期内
本文我们将讲解Java中的线程池(ThreadPool),从Java标准库中的线程池的不同实现开始,到Google开发的Guava库的前世今生。本章节涉及到很多前几个章节中阐述的知识点。我们希望你是按照顺序阅读下来的,不然有些知识会一头雾水。Java语言的实现中,把Java线程一一映射到操作系统级的线程,而后者是操作系统的资源,这意味着,如果开发者毫无节制地创建线程,那么线程资源就会被快速的耗尽。在Windows操作系统上,每个线程要预留出1m的内存空间,意味着2G的内存理论上做多只能创建2048个线程。而在Linux上,最大线程数由常量PTHREAD_THREADS_MAX决定,一般为102