在java中如何实现多线程的,java设置线程数

  在java中如何实现多线程的,java设置线程数

  关于多线程线程数的确定,最近看了几篇论文,这里做个笔记方便大家。

  1.《Java 虚拟机并发编程》年推出

  即线程数=CPU的核数*(1-阻塞系数)

  另一篇文章:《Java Concurrency in Practice》,即《java并发编程实践》,给出了线程池大小的估算公式:

  Nthreads=Ncpu*Ucpu*(1 w/c),其中Ncpu=CPU核心数,Ncpu=CPU利用率,0 ~ 1;W/C=等待时间与计算时间之比

  仔细推敲两个公式,其实差不多。当cpu利用率达到100%时,结论其实也是一样的。这时计算线程数的公式就变成了,n threads=NCPU * 100% *(1w/C)=NCPU *(1w/C)。

  然后实际应用中计算的公式就出来了,【以下计算,不考虑内存消耗等。],如下所示:

  1.对于IO密集型来说,阻塞时间w通常是计算时间c的几倍,假设阻塞时间=计算时间,Nthreads=Ncpu *(1 ^ 1)=2 Ncpu,那么在这种情况下,建议将cpu核数的两倍考虑为线程数。

  2.对于计算密集型,阻塞时间趋于零,即w/c趋于零,公式Nthreads=Ncpu。

  00-1010以上只是计算线程数的通用公式。在实际应用中,可能要考虑很多方面,比如内存容量消耗、任务耗时等。而且这个公式可以不断调整,适应场景。

  关于如何在Java多线程中确定线程数量的文章到此结束。关于如何确定Java中线程数量的更多信息,请搜索热门IT以前的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: