猿问

Java线程上下文切换开销大小与线程数量的关系?

在《Java并发编程的艺术》这本书的1.1.4章节"减少上下文切换实战"中举了一个例子,起初dump jboss进程时发现有300+个worker线程处于 waiting 状态,然后通过减少线程池的线程最大数量来减少处于 waiting 状态的线程数量,意思是这样就能减少上下文切换的次数了。

但是我有一点不太明白,如果大量线程处于 waiting 状态而请求数又少的话,那么OS从300个waiting线程中选一个处理请求跟从100个 waiting 线程中选一个不都是只有1次上下文切换吗;如果新到10个请求,那么无论你处于 waiting 的线程有多少,进行上下文切换的也只有个10个线程吧,线程数量多增加的是内存占用,跟调度开销有什么直接关系吗

慕容708150
浏览 1069回答 2
2回答

MYYA

原因很简单,因为操作系统需要对线程进行维护的(而不论这个线程出于什么样的状态) 所以线程越多,操作系统的开销确实是越大的
随时随地看视频慕课网APP

相关分类

Java
我要回答