获取线程cpu使用率

大家如何估算线程池数量?

大家如何估算线程池数量?

线程池的大小对系统的性能有一定的影响,过大或者过小的线程数量都无法发挥最优的系统性能,但是线程池大小的确定也不需要做的非常精确。因为只要避免极大和极小两种情况,线程池的大小对性能的影响都不会影响太大,一般来说,确定线程池的大小需要考虑CPU数量,内存大小等因素,在《Java Concurrency in Practice》 书中给出了一个估算线程池大小的经验公式:

线程池的大小对系统的性能有一定的影响,过大或者过小的线程数量都无法发挥最优的系统性能,但是线程池大小的确定也不需要做的非常精确。因为只要避免极大和极小两种情况,线程池的大小对性能的影响都不会影响太大,一般来说,确定线程池的大小需要考虑CPU数量,内存大小等因素,在《Java Concurrency in Practice》 书中给出了一个估算线程池大小的经验公式:

获取线程cpu使用率 - IT吧

公式:Nthread = Ncpu * Ucpu * (1+ W/C),各字段含义:

    Nthreads:线程数量

    Ncpu:CPU的数量,Runtime.getRuntime().availableProcessors()

    Ucpu:CPU使用率,范围在[0,1]

    W/C:等待时间与计算时间的比率

其实就是要分清是计算密集型还是IO密集型。

如果是C无限大也就是计算密集型的那么线程太多意义不大,因为需要CPU计算,起多了也没用。

如果是IO密集型那么可以起更多的线程,因为等待时间过多。

简单总结就是:IO密集多线程,计算密集线程=CPU核数比较合适。

欢迎关注笔者,持续分享有价值的优质架构文章。

以上内容是万老网对获取线程cpu使用率的问题就介绍到这了,希望介绍关于获取线程cpu使用率的1点解答对大家有用。

获取线程cpu使用率