我想在quadricore i7 CPU上执行(Java 7)以下算法,以便后者100%专门执行它。
long n = 1000000;
int a = 5;
long sum = 0;
for (long i = 1; i <= n; i ++) {
for (long j = 1; j <= i; j ++) {
for (long k = 1; k <= j; k *= a) {
sum ++;
}
}
}
System.out.println("Sum = " + sum);
我已经利用了手动解决方案( java.util.concurrent.Executors , java.util.concurrent.FutureTask ...),我将创建四个的任务:
我想知道在执行此程序时是否有一个简单/自动的解决方案来命令操作系统(我正在使用Windows)专用“所有”可用的CPU资源?
答案 0 :(得分:2)
我不知道这是在Java还是Windows下可用。在UNIX类型操作系统下的C / C ++中,您可以(使用适当的权限)将应用程序重新设置为负优先级。负优先级通常被称为“实时优先级”,因为操作系统不会调整它们,并且它们将优先于(几乎)系统上的其他所有内容。
我认为您在Java中可以做的最好的事情是使用Runtime.getRuntime()。availableProcessors()方法来确定您拥有多少处理器,并至少分配那么多线程。
答案 1 :(得分:0)
AFAIK OS中没有直接/自动的命令解决方案(通用操作系统窗口,linux)。但是在RTOS(实时操作系统)中你可以划分你的任务并专注于所有&#34;执行程序时可用的CPU资源。