【发布时间】:2011-03-20 13:39:09
【问题描述】:
我一直在从事一个可以概括为“计算密集型分析工具”的项目,我选择编写代码,以便使用多个线程并行处理多个单独的计算。
由于缺乏多线程项目编程经验而出现一系列问题后,看来我终于设法让它按我的预期工作了。从队列中逐一挑选计算,并同时进行处理。在a particular advice(关于适当的线程数)之后,我得到了对a previous question的回应,我已经设置了一个线程填充进程队列,而池中的其余线程从队列中获取进程演替。在我的 8 核 i7 机器上,我使用了 1 个生产者 + 8 个消费者 = 9 个线程。
现在我的问题如下:
当一切都按预期工作时,机器的 CPU 使用率达到顶峰也就不足为奇了。我一直在通过 Gnome System Monitor 跟踪 CPU 使用情况,在软件的分析阶段,内核似乎处于 90-100% 的负载。除了减慢同时运行的其他程序(例如浏览器、邮件、pdf 阅读器等)之外,还有其他我应该注意的潜在问题吗?例如,高负载会在 JVM 中创建任何工件吗?
考虑到我的软件旨在作为科学分析工具而不是常规桌面应用程序运行,我愿意接受减慢其他程序的速度,但我想知道是否还有其他问题我应该注意.非常欢迎任何实际示例或以前的经验。
提前致谢,
【问题讨论】:
标签: java multithreading cpu-usage