我的应用程序使用 Executor 为大量任务提供线程池。通过分析和基准测试,我确定当每个核心有多个线程时,我的应用程序运行速度最快。一个好的启发式方法是从每个核心 4 个线程开始,不断变化,直到达到 >90% CPU 或 >90% RAM。
是否有可用的执行器可以开箱即用地执行此操作?要么自动为每个核心使用 N 个线程(而不仅仅是一个),或者理想情况下,根据 CPU 和 RAM 使用情况限制线程池大小?
如果失败 - 如何以编程方式确定核心数量?
Runtime.availableProcessors()
Javadoc:
返回 Java 虚拟机可用的处理器数量。
该值可能会在虚拟机的特定调用期间发生变化。因此,对可用处理器数量敏感的应用程序应偶尔轮询此属性并适当调整其资源使用情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)