weixin_50926345
weixin_50926345
2021-05-24 10:51
采纳率: 0%
浏览 27

以下代码是什么意思(这是在写一个进度调程的代码的一部分)

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);

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • qq_19920839
    记得我雨 2021-05-24 15:07

    你的代码不全,我说一下大致的意思

    name 应该是任务的名称,输入M时会退出循环

    needTime 任务执行的次数,任务的实际执行次数为needTime/round

    currentQueue 任务队列

    waitQueue 阻塞队列,添加和弹出会阻塞直到成功才返回

    你的采纳率为0  就说这么多了

    点赞 评论

相关推荐