gpt4 book ai didi

java - 如何让Java使用多线程线程?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:35 24 4
gpt4 key购买 nike

这是一个与出现在以下位置的问题类似的问题: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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com