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);
你的代码不全,我说一下大致的意思
name 应该是任务的名称,输入M时会退出循环
needTime 任务执行的次数,任务的实际执行次数为needTime/round
currentQueue 任务队列
waitQueue 阻塞队列,添加和弹出会阻塞直到成功才返回
你的采纳率为0 就说这么多了