https://open8gu.com/concurrent/thread-pool/ftgh02hvumpm3zqg/

线程池是一种基于池化思想管理线程的工具,使用线程池可以减少创建销毁线程的开销,避免线程过多导致系统资源耗尽。充分利用池内计算资源,等待分配并发执行任务,提高系统性能和响应能力

在业务系统开发过程中,线程池有两个常见的应用场景,分别是:快速响应用户请求和快速处理批量任务

1. 快速响应用户请求

以电商中的查询商品详情接口举例,从用户发起请求开始,想要获取到商品全部信息,可能会包括获取商品基本信息、库存信息、优惠券以及评论等多个查询逻辑,假设每个查询是 50ms,如果是串行化查询则需要 200ms,查询性能一般。

image.png

而如果说通过线程池的方式并行查询,那查询全部商品信息的时间就取决于多个流程中最慢的那一条。

假设优惠信息流程查询时间 80ms,其他流程查询时间 50ms,经过线程池并行优化后,商品详情接口响应时间就是 80ms,通过并行缩短了整体查询时间

线程池种并行提交任务的完成时间,取决于这些任务中执行时间最慢的流程。

image.png

这种场景想要达到的效果是最快时间将结果响应给用户,我们在创建线程池时不应该使用阻塞队列去缓冲任务,而是可以尝试适当调大核心线程数和最大线程数,提高任务并行执行的性能。

关于在不同场景下如何设置线程池参数,详情请参考:🚧 如何设置线程池的参数?