特定のアルゴリズムのマルチスレッド シミュレータを実行するように依頼されました。タスクの 1 つは、定期的なスケジューリングの結果とラウンド ロビンの結果を比較することでした。ラウンド ロビン スケジューリング方法に関する情報を探していたときに、さまざまな一般的な説明と、それらとスレッドのスケジューリングとの間の関係を見つけることができなかったいくつかのコード例を見つけました。たとえば、次のコード (スタック オーバーフローでここにあります):
public static void RR3(int numProcess, int[] cpuBurst, int[] arrivalTime){
int quantum = 3,time = 0, temp;
int completionTime = 0;
LinkedList <Integer>process = new LinkedList();
for (int i = 0; i < numProcess; i++) {
process.add(i, cpuBurst[i]);
}
while (process.isEmpty() != true){
for (int j = 0; j < quantum; j++) {
System.out.println(process.getFirst());
if(process.peek() == 0 ){
completionTime = completionTime + time;
process.remove();
}
else{
temp = process.pop();
process.push(temp - 1);
time++;
}
}
process.addLast(process.getFirst());
process.removeFirst();
}
double act = (double) completionTime/numProcess;
System.out.println("-----------------RR3-----------------");
System.out.println(" Act = " + act + "ms");
}
プロセスの量、それぞれの時間などを表す整数以外は何も表示されませんが、実際にそれらの動作を管理するにはどうすればよいですか? プロセスを実行または停止するための呼び出しが表示されません。