ExecutorService pool=Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*10);
问题如下:
Runtime.getRuntime().availableProcessors() 可以获取当前系统工作的CPU数量。
根据CPU数量,动态建立一个足够大的线程池。我想问的是。如何可以计算出,每个线程所占用的CPU与内存大量,来分配一个合理的线程池。合当前CPU在最高工作效率下工作。
3 个解决方案
#1
貌似每个线程所占用的cpu 不太可能在运行之前知道吧 只能在运行的时候才知道的吧?
#2
最大线程数在操作系统有限制的,最主要的是你的服务有多快,如果每个服务都很快的可以少一点,一般建议每CPU不超过25个线程,当然多一点也没什么问题,不过就费点线程资源.
#3
谢谢两位的指点。
#1
貌似每个线程所占用的cpu 不太可能在运行之前知道吧 只能在运行的时候才知道的吧?
#2
最大线程数在操作系统有限制的,最主要的是你的服务有多快,如果每个服务都很快的可以少一点,一般建议每CPU不超过25个线程,当然多一点也没什么问题,不过就费点线程资源.
#3
谢谢两位的指点。