【发布时间】:2019-11-06 22:25:47
【问题描述】:
我正在实现一个标准化大数据集(单个文件)的程序,它是数学密集型计算,因此受 CPU 限制。
查找一些最佳线程问题,大多数会导致:
Runtime.getRuntime().availableProcessors()
但是使用 HT 技术,一个内核可以同时处理两个线程。
之前的一些答案还指出,最佳线程 = 内核数,我不确定它是否适用于 CPU 受限任务。
知道每个操作系统可能执行不同的并行编程,我是否应该单独使用availableProcessors() 而不必考虑以下元素:
- 每个内核的线程数
- 每个插槽的核心
- CPU 插槽
例如,我应该使用availableProcessors() * 每个内核线程 来获得最佳线程吗?是否造成线程竞争?
我正在寻找推荐的做法来实现这一点,而无需在程序移动到另一台机器时修改和重建程序。(该程序仅在本地机器上测试)
提前致谢。
【问题讨论】:
标签: java multithreading