Java应用中线程是不是开的越多越好,开多少合适,如何减少上下文切换开销?

Java应用中线程是不是开的越多越好,开多少合适,如何减少上下文切换开销?,如何写个shell脚本获取上下文切换的开销?

线程数并不是越多越好,具体要根据访问量和机器配置来定。

显然不是,应该根据生产环境的数据量调整

线程数一般根据CPU核心数量决定,减少线程开销可以使用线程池

不是开的越多越好啊?视生产环境的访问量来调整,并且也很容易引起安全问题

线程数并不是越多越好,具体根据实际需求来决定。可以通过线程池来减小上下文切换开销。

现在都用PHP TP的多

书上说,线程最好是cpu核数+1

并不是越多越好,线程多了有安全问题,对服务器硬件要求也高。主要还是根据你的服务器的访问量

线程开多了会卡 这个很简单 其实一般计算机一核就一条线程 ——当然现在也有双核双线程双核四线程等等。

如果不考虑多核多线程的话,所谓的开多线程 只不过是几个线程在抢一条线程的运行权。
所以开的越多,计算机整体的运行速度就会越慢,不过这个是和计算机的整体配置有关的,所以没有硬性要求开多少条合适,主要是看你用的电脑适合开多少条,一般普通的家用机 java线程开到5条以下基本对电脑没太大影响,好点的电脑甚至开到10条也能流畅运行,但是再多肯定就会有影响了。

线程太多会对服务器性能有比较大的要求,即使java服务器性能足够业务并发量多,太多也会对数据库或其他资源造成影响,所以线程不是愈多愈好,需要根据性能和资源来分析确定。

看了一遍所有人的回答,都是在讨论线程和进程本身。我想说的是,你这个问题本身就有问题。你没有说清楚,你想解决的是什么问题。通常问题领域就两种:1. 计算密集型。2. I/O密集型。不同的场景下,最优解对于线程数量的要求是不一样的。如果你想知道一个准确的基于科学理论和数学逻辑的答案,请参考:java并发实践(Java Concurrency in Practice)

如果高并发,解决10k,可以考虑netty,线程上下文切换可以选择测试一下

线程不是越多越好,实际需要多少开多少,建议使用线程池来管理线程

一般使用CPU核数的1倍~2倍即可。

显然不是越多越好,一般没有多线程的系统,高cpu任务,开到cpu数就差不多。。
如果是有多线程的开到总核心数*65%差不多