第五次作业
类图
度量
Bug分析
1.本次写无效输入的正则时忘记判断了0楼层为非法指令导致错误。
2.第一次写多线程设计,很多线程之间的同步控制没有办法很好的理清楚,在电梯状态转换的边界上的线程同步控制处理不当。
设计分析
本次设计时没有很好的理清楚各个线程状态转换时,线程之间的交互逻辑。导致当电梯在转换边界的指令的捎带情况会出现问题。
第六次作业
类图
度量
Bug分析
1.未能正确理解指导书的rename逻辑,导致rename逻辑出错。
2.输入判断逻辑有误,导致输入时不能正确的在指令条数过多时停止。
设计分析
本次作业主要难点在于正确理解指导书后,将每个功能理解清楚。我将每次监控请求都作为一个线程来运行,这样保证了每个线程之间的消息独立性。代码量和思维量也减小很多,体现了多线程编程的好处。
第七次作业
类图
度量
Bug分析
由于时间是取自系统时间,且时间精度为100ms,可能会因为1ms的误差导致最后100ms的误差。
设计分析
将每辆出租车,每个请求各开一个线程。然后通过一个请求列表来进行出租车和请求之间的交互。这次出租车的状态转换之间的线程同步处理较为简单,只需注意出租车在改变状态时的几种情况即可。
发现别人bug的策略
由于这几次作业都是多线程,不好通过大量的数据来批处理的测试对方bug。因此主要采取测公测时研究对方代码的逻辑来进行测试。
多线程设计总结
多线程的设计关键在于几点:对对象分析之后线程的选择,线程与线程之间的同步状态的问题,线程安全问题。
心得体会
感受到了多线程的程序的方便之处。