以编程方式以受控方式增加CPU使用率

时间:2012-04-04 11:04:38

标签: java eclipse cpu-usage

我希望通过java程序增加CPU使用率,尽管是以受控方式。比如,用户可以指定“高”,“中”或“低”等参数,我应该能够根据用户的选择将CPU增加一定量。让我们说高,我希望它增加5%,中等增加3%,低增加1%。 这是否可以采用干净有效的方法(不只是使用while和for循环)?如果是,那么精度和准确度将如何以及将会是什么?

提前致谢

3 个答案:

答案 0 :(得分:2)

您可以通过在代码中插入睡眠语句(例如Thread.sleep())来修改Java程序产生的CPU负载,使用可变延迟来更改负载。最简单的情况是循环中的sleep语句,在您要加载的每个CPU核心的单独线程中执行。

也就是说,Java 不适合这项任务 - 如果你真的需要你所描述的那种精度,那就不是了。垃圾收集器和其他因素使其行为变得不可预测。

在我自己的应用程序中,我经常在相同输入的10%范围内获得吞吐量变化,没有明显的原因。出于这个原因,Java也不适用于实时应用程序。

如果你提到你需要做什么样的事情,这可能有助于我们提供更好的答案 - 也许,为什么你需要做 Java ......

答案 1 :(得分:0)

编写一个只有一个线程的java程序,也就是说,在main方法中创建一个无限的while循环,它继续执行。 您会发现CPU使用率会增加。 如果你在这个while循环中没有任何睡眠,你会发现你的程序将占用几乎100%的CPU。 在这个while循环中放入的睡眠越多,程序占用的CPU占用量就越少。

答案 2 :(得分:-1)

CPU使用率由基础操作系统控制。操作系统将确定执行给定任务所需的CPU使用率。 由于CPU使用率由操作系统控制,因此无法通过java直接控制。

您唯一能做的就是更改线程优先级以间接控制CPU使用率,或者您可以让线程在给定时间内进入休眠状态。