java并发中的潜在瓶颈

时间:2012-02-14 18:00:24

标签: java concurrency

我致力于实现一个推理器,一个复杂的东西。我试图通过使用并行化线程来提高性能,但只是增加了开销。

我的问题是除监视器锁定)之外是否还存在其他潜在的瓶颈。我从我的程序中删除了synchronizedvolatile等所有指标。

我使用java.util.concurrent实用程序,并将数据拆分为独立的线程数组。

3 个答案:

答案 0 :(得分:3)

您可以做的最有用的想法是确保您的线程执行长序列的独立工作。这些序列需要明显长于您可能产生的开销(比如说1到10微秒)

一个常见的错误是将工作分解得太精细(在此过程中产生大量开销)。每个核心只需要一个任务来保持每个核心的忙碌。

如果没有关于你要做什么以及如何分解你工作的大部分细节,很难提出更具体的建议。

答案 1 :(得分:2)

  • 潜在的瓶颈是创建新线程。如果发生这种情况,你应该考虑使用线程池。
  • 另一个瓶颈可能是在经常调用的方法中分配数组。

您可以使用JProfiler运行应用程序来检测实际的瓶颈。 JProfiler将在加载时检测您的字节代码,并让您深入了解应用程序内存消耗,运行时性能等。

答案 2 :(得分:0)

您可以查看Disruptor,即使只是阅读他们的技术论文,该论文深入探讨了这一主题。