【面向对象】第二单元总结——电梯

设计策略

本次做业开始引入多线程编程。算法

第一次做业是实现单部单请求电梯,我采用的策略是经过输入把请求保存在调度器的队列中,调度器会向电梯发出指令以驱使其运行。编程

第二次做业是实现单部多请求电梯,我采用的策略是输入以后,调度器对输入请求进行处理,而后保存在电梯的不一样队列中(向下运行队列、向上运行队列),电梯按照运行队列的顺序运行。从整体上来讲,电梯的运行模式是上下行交替。设计模式

第三次做业是实现多部多请求电梯,我采用的策略与第二次相似,不一样点是调度器会按必定的算法把请求保存在不一样电梯的队列里。安全

对于线程终止的说明是,输入终止会记录标记,电梯队列为空并拥有终止标记时中止运行。多线程

代码度量

第一次做业



第二次做业




BUG

BUG内容

本身出现的BUG内容主要是如何向队列分配请求的算法上,还有就是电梯完成当前队列的判断条件上。并发

寻找BUG的策略

因为本次做业与第一次做业最大的不一样在于多线程的使用,因此在寻找BUG的时候我会更多地测试并发性,请求同时出现如何处理?可否实现捎带?当电梯中止运行,更新下一个目的地的时候出现了新请求该如何处理?诸如此类的问题......测试

心得体会

设计原则

在本次做业中我运用到了单例模式、工厂模式、生产消费模式等成熟的设计模式,同时也注意遵循单一责任原则、开闭原则等设计原则。使用成熟的模型,并遵循良好的规范可使个人程序在运行时更加稳定,程序的运行逻辑更符合我对它的指望,不会出现一些奇奇怪怪的BUG,难以定位。就算是出现了BUG,也多半是本身设计上的失误,可以较快更正。线程

线程安全

要写好本次多线程做业,我以为务必要把锁与同步的细节弄清楚。notify和wait如何配合使用?锁对象和锁方法究竟有什么区别?弄清楚这些以后,才能确保线程运行的逻辑在咱们的控制之下。设计

相关文章
相关标签/搜索