设为首页 加入收藏

TOP

作业小结2(一)
2019-09-17 18:31:29 】 浏览:77
Tags:作业 小结

作业小结2

第五次作业 多线程电梯

设计策略

构造两个队列,PendingRequestList和ProcessedRequestList。 PendingRequestList:已经输入的未被调度的请求队列。 ProcessedRequestList:已经被调度和分配的请求队列,每个电梯都有一个这样的队列,电梯会按照这个队列的顺序来执行任务。 时间处理: 每个电梯记录nextRequest、nextTime;、requestTime,分别代表正在执行的请求是哪个,到达下一楼层的时刻(系统时间),执行完下一个请求的时刻(系统时间)。 每一次,电梯会sleep一定时间,这个时间通过计算得出:用nextTime - currentSystemTime - 500(前提是这个值是正数的情况下,会先用if来判断一下),之后在循环判断System是不是大于等于nextTime,如果是,表明到达新的楼层,执行相应的操作。 另外,如果nextTime == requestTime,则表明这个请求处理完毕,还是去队列中获得新的请求来执行。 如果nextRequest与本电梯对应的ProcessedRequestList.first不同,表明在请求队列中的列首插入了一个捎带请求,这可以很方便的监测到,之后执行一些修改requestTime、nextRequest之类的操作。 这样做的好处是,电梯时间的误差非常非常小,甚至可以说是没有误差(当CPU运行情况良好时)。

程序结构

class Cyclic Dcy Dcy* Dpt Dpt*
top.buaaoo.gitlab.Direction 0.0 0.0 0.0 7.0 10.0
top.buaaoo.gitlab.Elevator 4.0 5.0 12.0 3.0 4.0
top.buaaoo.gitlab.Elevator.STATE 0.0 0.0 0.0 2.0 5.0
top.buaaoo.gitlab.ElevatorRequest 2.0 2.0 3.0 3.0 9.0
top.buaaoo.gitlab.FloorRequest 2.0 2.0 3.0 3.0 9.0
top.buaaoo.gitlab.Input 4.0 4.0 12.0 1.0 4.0
top.buaaoo.gitlab.PendingRequestList 0.0 4.0 4.0 4.0 5.0
top.buaaoo.gitlab.ProcessedRequestList 0.0 2.0 4.0 2.0 5.0
top.buaaoo.gitlab.Request 2.0 3.0 3.0 9.0 9.0
top.buaaoo.gitlab.Scheduler 4.0 10.0 12.0 2.0 4.0
top.buaaoo.gitlab.Scheduler_ALS 4.0 4.0 12.0 1.0 4.0
top.buaaoo.gitlab.Scheduler_FOOL 4.0 3.0 12.0 1.0 4.0
Total          
Average 2.1 3.25 6.41 3.16 6.0
method ev(G) iv(G) v(G)
top.buaaoo.gitlab.Elevator.changeRequest(long) 3.0 6.0 8.0
top.buaaoo.gitlab.Elevator.Elevator(int,ProcessedRequestList) 1.0 1.0 1.0
top.buaaoo.gitlab.Elevator.getDirection() 1.0 1.0 1.0
top.buaaoo.gitlab.Elevator.getFloor() 1.0 1.0 1.0
top.buaaoo.gitlab.Elevator.getMileage() 1.0 1.0 1.0
top.buaaoo.gitlab.Elevator.getState() 1.0 1.0 1.0
top.buaaoo.gitlab.Elevator.output(long) 1.0 2.0 2.0
top.buaaoo.gitlab.Elevator.run() 4.0 13.0 20.0
top.buaaoo.gitlab.Elevator.start() 1.0 2.0 2.0
top.buaaoo.gitlab.ElevatorRequest.ElevatorRequest(long,String,int,int) 1.0 1.0 1.0
top.buaaoo.gitlab.ElevatorRequest.getDirection() 1.0 1.0 1.0
top.buaaoo.gitlab.ElevatorRequest.getFloor() 1.0 1.0 1.0
top.buaaoo.gitlab.ElevatorRequest.getId() 1.0 1.0 1.0
top.buaaoo.gitlab.FloorRequest.FloorRequest(long,String,int,Direction) 1.0 1.0 1.0
top.buaaoo.gitlab.FloorRequest.getDirection() 1.0 1.0 1.0
top.buaaoo.gitlab.FloorRequest.getFloor() 1.0 1.0 1.0
top.buaaoo.gitlab.FloorRequest.getId() 1.0 1.0 1.0
top.buaaoo.gitlab.Input.addRequest(long,String[],int) 1.0 9.0 10.0
top.buaaoo.gitlab.Input.errorInfo(String) 1.0 1.0 1.0
top.buaaoo.gitlab.Input.Input(PendingRequestList) 1.0 1.0 1.0
top.buaaoo.gitlab.Input.run() 5.0 8.0 10.0
top.buaaoo.gitlab.Input.start() 1.0 2.0 2.0
top.buaaoo.gitlab.PendingRequestList.addRequest(long,String,int,int,int) 3.0 1.0 3.0
top.buaaoo.gitlab.PendingRequestList.addRequest(long,String,int,int,String) 3.0 1.0 4.0
top.buaaoo.gitlab.PendingRequestList.getFirst() 1.0 1.0 1.0
top.buaaoo.gitlab.PendingRequestList.getLas
首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java中队列 下一篇Salesforce的数据权限机制

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目