作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序中有 3 个固定线程池,每个大小为 20。
我在池中提交任务,但有时很少会说每个池 1 、池 2 、池 3 中有 5 个任务,所以每个池中有 15 个线程闲置。我想知道这些空闲线程(总共 45 个)是否会进入上下文切换并降低性能,即使没有任务提交给它们?
最佳答案
如果池线程没有任务,则它们处于状态 WAITING ,这意味着除了等待信号发生(在本例中,等待任务提交)之外,他们没有什么可做的。它们不会被安排任何 CPU 时间,因为它们无事可做。调度程序足够聪明,知道这一点,因此此时它不会与其他更活跃的线程竞争资源。
如果线程处于RUNNABLE
状态,那么它可能有实际要做的事情,并获得CPU时间。
因此,池中多余的线程不会与 Activity 线程竞争,但它们确实会占用少量 native 资源(在谈论 60 个线程时,这还不够真正重要)。
关于Java固定线程池等待线程上下文切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48456817/
我是一名优秀的程序员,十分优秀!