这与出现在的问题类似:如何确保 Java 线程在不同的内核上运行。但是,Java 在这方面可能已经取得了很大进展,而且我在那个问题中找不到我正在寻找的答案。
我刚写完一个多线程程序。该程序产生了几个线程,但它似乎并没有使用超过一个内核。该程序更快(我正在并行化一些使其更快的东西),但它肯定不会使用所有可用的内核,通过运行“top”来判断。
有任何想法吗?这是预期的行为吗?
一般代码结构如下:
for (some values in i)
{
start a thread of instantiated as MyThread(i)
(this thread uses heavily ConcurrentHashMap and arrays and basic arithmetic, no IO)
add the thread to a list T
}
foreach (thread in T)
{
do thread.join()
}