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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值