Java中的循环法

时间:2013-10-30 17:24:21

标签: java cpu

我正在研究Java中的循环算法,并且我有一个无法正常工作的循环。我相信这是一个我错过的简单逻辑错误。 exec []数组保存了cpu中进程的执行时间。如果小于quantam,我需要从那个时间减去quantam或剩下的时间量。然后我需要它来检查下一个过程。每个进程都应该有一个传递,直到执行时间为0.总和确保语句在有任何一个需要运行的进程时继续运行。总和只是添加所有数组元素时间。

while (sum != 0) {
        int show = i + 1;
        if (exec[i] != 0 && exec[i] > quant) {
            exec[i] = exec[i] - quant;
            sum = sum - quant;
            JOptionPane.showMessageDialog(null, "Process" + "  " + show + " is at" + "  " + exec[i]);
            JOptionPane.showMessageDialog(null, "sum" + " " + " is " + sum);
            if (i == irq - 1) {
                i = 0;
            } else {
                i++;
            }
        }
        if (exec[i] != 0 && exec[i] < quant) {
            exec[i] = exec[i] - exec[i];
            sum = sum - exec[i];
            JOptionPane.showMessageDialog(null, "Process" + "  " + show + " is at" + "  " + exec[i]);
            JOptionPane.showMessageDialog(null, "sum" + " " + " is " + sum);
            if (i == irq - 1) {
                i = 0;
            } else {
                i++;
            }
        }

    }

如果有修复或需要更多信息,请告知我们。谢谢!

2 个答案:

答案 0 :(得分:2)

exec[i]=exec[i]-exec[i];
sum=sum-exec[i];

相同
exec[i]=0;
sum=sum-0;

另外,你不处理exec [i] == quant

的情况

答案 1 :(得分:1)

我不确定,你想做什么。这听起来像“我希望多线程使我的应用程序更快”,但在单核循环中,你将无法成功。

如果您想要CPU循环,请让JVM(或操作系统)决定。两者都是为此而做的:

某种java伪代码:

int threadPoolSize = Runtime.getRuntime().availableProcessors();
ExecutorService pool = Executors.newFixedThreadPool(threadPoolSize);
pool.execute(new ImplementationOfCallableOrRunnable());

http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html