我们正在分析一项性能问题,最多可能有500个工作线程,CPU使用率并不是很高。上下文切换会导致高CPU吗?换句话说,由于CPU使用率不高,上下文切换(500个线程)在这里不是问题。
是的,上下文切换可能会导致性能问题,但适当的设计通常可以防止这种情况发生。一般来说,在任何时候有比可用核心更多的线程“可运行”不是非常高效的:如果几个线程正在等待某些事情发生(I/O是一个常见的例子),则可以获得性能提升,但如果您只是尝试完成大量作业,则每个核心一次执行一个任务通常会更有效率(更少的上下文切换,更少的内存开销等)。这就是为什么ExecutorService
很有用:它允许您将所有作业分派到队列中,而不必担心线程机制。