第二次总结博客

第一次作业

  第一次电梯作业是FCFS傻瓜式调度,建了5个类,InputHandler类是一个线程,负责处理输入,获取请求;QueueList类负责将收到的有效请求存起来,采用了单例模式;Scheduler类相当于生产-消费者中的托盘,采取单例模式,get()方法负责从QueueList中取出需要响应的请求,put()方法则负责向托盘内放请求;Elevator类则响应调度器取出的请求。

  第一次作业的类图如下:

第二次作业

  第二次作业在第一次作业的基础上增加了可捎带请求。所以在第一次作业的基础上,修改调度器Scheduler类和响应电梯Elevator类即可。Scheduler为稍微长了点儿脑子的ALS_Scheduler调度器,alsGet()方法负责ALS调度,执行结束后提供一个主请求+可捎带请求的请求队列;Elevator类的moveUp()和moveDown()方法模拟电梯每次上一层或者下一层,checkFinshReq()和checkPickReq()分别负责判断电梯刚刚到达的该层是否有已完成的请求或可捎带的请求。

  第二次作业的类图如下:

问题

  存在的问题是使线程结束的条件不够精确,测试用例中出现了不少超时警告。

  另外,还有一个问题是对于线程的控制欠缺,经常会有还可以捎带的请求未被捎带,到后来才被响应。

  

posted on 2019-04-24 21:26  mzny  阅读(125)  评论(0编辑  收藏  举报

导航