线程越多越好吗?

底线:线程并不是越多越好。
线程切换成本较高,资源之间存在大量竞争,上下文切换影响性能,管理复杂。
多线程4 核CPU的情况说明问题很严重。
合理控制线程数量,平衡性能和复杂度。

线程数越多越好吗

哦,这些话让我头晕。

我想当时我们厂里有一个小兄弟在运维服务器。
这家伙的身手不错,不过就是爱搞新花样。
当时,其服务器上已经添加了二十多个线程来运行文件下载任务。
想想看,一台服务器只有两个CPU和四个核心。
结果呢?下载速度和王大爷在村口骑的自行车一样慢。
他还是一头雾水,问我怎么了。

我告诉他想一想,线程太多了,就像早上关摊的菜市场,卖菜的、买菜的、看热闹的都挤在一起,谁也无能为力。
我必须一直来回运行,尝试同时使用两个 CPU。
这不是很慢吗?系统负载已经破纪录了,那还谈什么响应速度呢?最终,你必须一一停下来,调整到十个左右,这样才能跟上速度。

还有一种情况,就是内存。
我记得有一年我帮朋友调试一个应用程序,应用程序运行时内存非常高。
塔耶布查了一下,后台开了一百多个话题。
想一想,每个线程肯定要占用一些内存吧?几百个,有多少个?更何况,他还得去申请、去发放,这让垃圾收集变得一团糟。
该应用程序经常出现延迟,这确实很难使用。

因此,正如您所看到的,线程越多越好。
你应该根据实际业务场景如实测试和调整。
对于I/O密集型任务,尤其是需要频繁磁盘读写的任务,线程过多效果不一定好。
你必须找到平衡点。
太少了,就无法完成任务,太多了,就会成为负担。