线程池应用场景的疑惑?

线程池的应用场景
很多文章都介绍多线程并行去执行代码,提高rt时间。
比如美团的这个文章。Java线程池实现原理及其在美团业务中的实践 - 美团技术团队

img


我有个问题:比如说springboot web项目,tomcat默认有200线程,那这里使用线程池去并行执行
1.获取价格
2.获取库存
3.获取图片
这三个任务,线上业务线程池假如是10个线程。那么这里会提高性能吗?
极端情况下,tomcat的200个线程都在处理这个接口,但是业务线程池只有10个,那么任务不是都会在业务线程中排队吗?反而会导致rt升高。
同理 需要等待返回结果给客户端的场景 是不是 都不适合采用线程池去并行。

线程主要是两类作用,一个是隐藏外部延迟(比如说多线程下载)
一个是充分利用多个处理器并行计算(这种情况线程个数的上限一般以不超过逻辑处理器内核个数为宜)
如果你的场景满足以上2条,就能提高性能。

固定线程数并不适合所有场景,目前有几个动态线程池工具,可以使用一下。200个请求并发下,只有10个线程并不合理吧,假设1,2,3都非常耗时的情况下,肯定阻塞。