编程语言
首页 > 编程语言> > java-多线程,计算密集型应用程序的潜在问题

java-多线程,计算密集型应用程序的潜在问题

作者:互联网

我一直在从事一个可以概括为“计算密集型分析工具”的项目,我选择编写代码,以便使用多个线程并行处理多个单独的计算.

由于缺乏对多线程项目进行编程的经验,出现了一系列问题之后,看来我终于设法使它按我的预期工作.从队列中一个接一个地选择计算,并同时进行处理.在a particular advice之后(关于适当的线程数),我响应a previous question进行了设置,以便有一个线程填充进程队列,而池中的其余线程则依次从队列中拾取进程.在我的8核i7机器上,我有1个生产者8个使用者= 9个线程.

现在我的问题如下:

当一切都按预期工作时,机器的CPU使用率达到顶峰也就不足为奇了.我一直通过Gnome系统监视器跟踪CPU的使用情况,在软件的分析阶段,似乎内核的负载为90-100%.除了降低同时运行的其他程序(例如浏览器,邮件,pdf阅读器等)的速度外,我还应该注意其他潜在问题吗?高负载会在JVM中创建任何工件吗?

考虑到我的软件旨在作为科学分析工具而不是常规的桌面应用程序运行,因此我希望降低其他程序的运行速度,但是我想知道是否还有其他问题应该引起我的注意.任何实际的例子或以前的经验都非常欢迎.

提前致谢,

解决方法:

如果这是一项需要大量计算的任务,那么我发现以后台优先级运行此类任务很有用.除非任务是占用大量内存并导致大量分页,否则这应使其他进程在很大程度上不受阻碍地运行,同时仍允许计算进程获得实际可用CPU的最大份额.如果您在Windows上运行,则有时GUI会变得无响应,并且可能会难以终止进程或完成其他工作. (在这方面,Unix / Linux更好,但是仍然很烦人.)

您确实要确保不使用过多的内存,以免计算机开始疯狂地进行交换.

标签:multithreading,cpu-usage,java
来源: https://codeday.me/bug/20191208/2092697.html