t() |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.PendingRequestList.PendingRequestList() |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.PendingRequestList.removeRequest(Request) |
1.0 |
1.0 |
13.0 |
top.buaaoo.gitlab.ProcessedRequestList.addRequest(Request,Direction,int) |
14.0 |
8.0 |
20.0 |
top.buaaoo.gitlab.ProcessedRequestList.getFirst() |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.ProcessedRequestList.getMain() |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.ProcessedRequestList.nextRequest() |
4.0 |
5.0 |
5.0 |
top.buaaoo.gitlab.ProcessedRequestList.ProcessedRequestList() |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.Request.getTime() |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.Request.judgeSame(Request) |
3.0 |
5.0 |
7.0 |
top.buaaoo.gitlab.Request.Request(long,String) |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.Request.toString() |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.Scheduler.deliverRequest() |
7.0 |
14.0 |
17.0 |
top.buaaoo.gitlab.Scheduler.findPickedRequest(int,Request) |
8.0 |
19.0 |
23.0 |
top.buaaoo.gitlab.Scheduler.findSameRequest(int,Request) |
6.0 |
4.0 |
6.0 |
top.buaaoo.gitlab.Scheduler.getSeconds(long) |
2.0 |
2.0 |
3.0 |
top.buaaoo.gitlab.Scheduler.main(String[]) |
1.0 |
2.0 |
4.0 |
top.buaaoo.gitlab.Scheduler.outputSame(Request) |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.Scheduler.print(String) |
1.0 |
1.0 |
3.0 |
top.buaaoo.gitlab.Scheduler.run() |
1.0 |
9.0 |
9.0 |
top.buaaoo.gitlab.Scheduler.Scheduler() |
1.0 |
1.0 |
2.0 |
top.buaaoo.gitlab.Scheduler.start() |
1.0 |
2.0 |
2.0 |
top.buaaoo.gitlab.Scheduler_ALS.output(Request) |
1.0 |
2.0 |
2.0 |
top.buaaoo.gitlab.Scheduler_ALS.Scheduler_ALS() |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.Scheduler_ALS.simulate(int,int) |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.Scheduler_FOOL.output() |
1.0 |
2.0 |
2.0 |
top.buaaoo.gitlab.Scheduler_FOOL.print_same(Request) |
1.0 |
1.0 |
1.0 |
top.buaaoo.gitlab.Scheduler_FOOL.Scheduler_FOOL() |
1.0 |
1.0 |
1.0 |
Total |
103.0 |
150.0 |
208.0 |
Average |
1.94 |
2.83 |
3.92 |
从以上表格可以看出,这次程序架构还算不错。各个类之间的依赖性已经到了很低的程度。只是这次及其个别的方法,复杂度还是相对较高,这一点还需要改进。尤其是Elevator.run()这个方法,里面放的东西确实有点多了,行数都有79行,应该多分一些逻辑出去的。
本次因为格式原因,被测到一个Error Bug,因为使用了自己写的链表数据结构,针对某种特殊情况(当输入一行,第一个有误时)未进行处理,导致了Crash。然后就没有其它Bug了,有点可惜。从此以后学会了try catch包住main里所有代码,以减少crash可能性。
这一次多线程电梯的调度系统,明显感觉有趣了很多,我个人对多线程的理解还是不错的,没有花太多时间就完成了这个作业,而且除了那个格式错误导致的bug就没有别的bug了。这次作业让我有机会亲手写一个多线程的程序,我觉得很有成就感。感谢课程组!
用SafeFile来实现文件相关的线程安全类,用Trigger作为触发器的线程,包含了触发器的属性,以及监测方法。Trigger生成后,Trigger不断扫描被监测的那些文件夹和文件。另外作者对于文件夹的监测,相当于对文件夹下所有的子文件的监测(也包括其所有子目录的所有子文件)。因此,对于大小的监测也只是针对文件的。