一位爱好技术的橘右京的哥哥橘左京
前言
既然讲到了线程池,那我们就先聊一下线程,线程为何物,每一个程序为单独的一个进程,如QQ、网易云,那我们如何理解线程呢,其实在一个进程内至少包含一个线程来作为程序的最小执行单位,如迅雷同时下载多个文件。
线程池
为什么要使用线程池?线程池顾名思义是由多个线程所组成,作用就是减少线程的建立与销毁,与数据库连接池相同概念,为了减少连接与释放,从而降低消耗提升效率。
适用场景
很多小伙伴初识多线程,一直不明白多线程实际的应用,它到底应该应用在什么地方,其实还是要根据你的具体业务来决定是否适用多线程,比如展示详情页需要花费80ms,分八步查询了不同表的数据,每步占10ms,若是同步执行就需要顺序执行组装数据,这时如果引入了多线程来进行查询,只需要10ms多的时间返回数据。
创建方式
Executors类提供了六种不同的线程池创建方案,参数是方法默认的,最终都是通过ThreadPoolExecutor实例。这种方式虽然简单方便,但是也有弊端,在开发者不了解或无意中的使用可能会造成OOM。阿里手册也明确的规定不准直接使用Executors来创建线程池,要使用ThreadPoolExecutor去自定义线程池参数。
1.Executors
第一位登场的是Executors,我们先来展示一下它的方法,从图中可以看到,它给出了六种创建线程的方式,请小伙伴们根据两个一组顺序阅读

1)newCachedThreadPool

本文深入探讨了Java线程池的原理与应用场景,包括线程池的必要性、不同类型的线程池如newFixedThreadPool和newScheduledThreadPool,以及线程池参数的核心线程数、最大线程数和拒绝策略等。同时,文章指出使用Executors创建线程池可能引发的问题,并推荐使用ThreadPoolExecutor自定义参数以避免潜在风险。最后,展示了如何正确创建和使用线程池的示例代码。

483

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



