List<Integer> execOrder = new ArrayList<>();
do {
flagClounter = 0;
for (long currTime = t; currTime <= et; currTime += 60*1000) {
for (int i = 0; i < 4; i++) {
if (rem[i] > 0) {
if (rem[i] > qtm) {
execOrder.add(i + 1);
rem[i] = rem[i] - qtm;
flagClounter++;
} else {
execOrder.add(i + 1);
rem[i] = 0;
flagClounter++;
}
}
}
}
} while (/* what? */);
输出为: -
the time quantum in milliseconds:-
40000
the starttime is:-
2014-04-05 11:04:00.0
the starttime with 5 minutes added in milliseconds :-
1396676340000
the burst_time of the respective machines:-
00:01:00
00:02:00
00:01:00
00:02:00
burst_time in milliseconds:-
60000
120000
60000
120000
the scheduled id's:-
1 2 3 4 1 2 3 4 2 4
此代码是roundrobin算法的一小部分..
在第一个for循环中,即for (long currTime = t; currTime <= et; currTime += 60*1000)
其中t
是从数据库检索的时间戳(starttime),如果我将当前时间设为t
,则转换为毫秒,然后该shoutld运行到et
,我已定义为t+5min
。
rem[i]
是存储在每个机器的数组中的突发时间数组。 qtm
是时间片或量子,固定为40 sec
算法工作正常..但在这里我需要这个代码只运行到第一个for循环中固定的时间。即,5分钟..但它只执行所有内循环一次..我不能这样做.. ,,我应该使用任何计时器功能来实时执行此操作???我希望它在用户确定的时间内运行...请帮助我...