作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是一个与出现在以下位置的问题类似的问题:How to ensure Java threads run on different cores .然而,在 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()
}
最佳答案
如果它几乎恰好是一个 CPU 的 100%,则可能意味着您确实拥有
如果您正在使用大约一个 CPU,这可能意味着这就是您的 CPU 的所有工作,因为您正在等待诸如 IO(网络和/或磁盘)之类的东西
我建议您查看 VisualVM 中线程的状态。它将帮助您确定哪些线程正在运行,并让您了解它们的行为模式。我还建议您使用 CPU 分析器来帮助找到瓶颈。
关于java - 如何让Java使用多线程线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534915/
我是一名优秀的程序员,十分优秀!