while (true) {
String name = scanner.next();
if (name.equals("M")) {
break;
}
int needTime = scanner.nextInt();
PCB inputPCB = new PCB(name, needTime);
currentQueue.offer(inputPCB);//offer添加不会抛出异常,而是返回false
waitQueue.offer(inputPCB.getName());
}
scanner.close();
while (true) {
PCB processingPCB = currentQueue.poll();//取出首个元素
if (processingPCB.state != 'M'){
waitQueue.poll();
processingPCB.setState('R');
if (processingPCB.getNeedTime()>round) {
processingPCB.setCpuTime(processingPCB.getCpuTime() + round);
processingPCB.setNeedTime(processingPCB.getNeedTime() - round);
processingPCB.setState('R');
waitQueue.offer(processingPCB.getName());
} else {
processingPCB.setCpuTime(processingPCB.getCpuTime()
+ processingPCB.getNeedTime());
processingPCB.setNeedTime(0);
processingPCB.setState('B');
finishQueue.offer(processingPCB.getName());
}
}
currentQueue.offer(processingPCB);