2013-10-30 55 views
0

我正在使用Java中的循環法算法,並且出現無法正常工作的循環。我相信這是一個簡單的邏輯錯誤,我錯過了。 exec []數組保存cpu中進程的執行時間。我需要從該時間減去quantam,或者如果小於quantam,則需要剩餘的時間量。然後我需要它來檢查下一個過程。每個進程都應該有一次傳遞,直到執行時間爲0.總和確保語句保持運行狀態,同時有任何一個進程需要運行。總和簡單來說就是添加所有的數組元素時間。Java中的循環法

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
exec[i]=exec[i]-exec[i]; 
sum=sum-exec[i]; 

是一樣

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

而且,你不把高管的情況下,[我] ==定量

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