多线程编程时,最佳线程数目与啥有关,核数,还有其他的吗

我所了解到的原则是:活跃线程数为 CPU(核)数时最佳。过少的活跃线程导致 CPU 无法被充分利用,过多的活跃线程导致过大的线程上下文切换开销。首先线程应该是活跃的,处于 IO 的线程,休眠的线程等均不消耗 CPU。在实际环境中,当前活跃线程数一直在变化,很多活跃线程可能因为需要进行 IO 处理或等待资源而处于非活跃状态,假如说线程的数量等于 CPU(核)数,这就意味着活跃线程数小于 CPU(核)数。这就导致有一些文档建议使用 CPU * 2 + 2 之类的规则来确定线程数量,但是实际需要的线程数和线程实际工作内容有关,线程如果一直处于活跃状态,那么线程数量达到或略高于 CPU(核)数能较为充分利用 CPU,线程如果常常需要进行等待而处于非活跃状态,这时候线程数应该较多才能保证存在足够多的活跃线程以充分利用 CPU。但这只是简单考量,有时候实际中的情况更为复杂,必须考虑清楚线程到底会以何种行为工作,针对性的实验得到一个合理值是必要的。
■网友
想起好多Android源码编译的教程都把它设为核数的两倍。迄今不知道是什么原理


    推荐阅读