zoukankan      html  css  js  c++  java
  • OO第二单元作业总结

    本单元的内容是多线程电梯。

    第五次作业分析

    第五次作业较简单,我的做法是主线程作为输入处理线程,电梯一个线程。主线程往请求队列里添加请求,电梯一个一个取请求,然后依次处理,本次没有考虑捎带。

    本次作业并没有考虑线程安全问题,只是把装请求的容器换成了Vector。

    方法复杂度:

    方法复杂度都比较低。

    第六次作业

    第六次作业相比前一次的增加了捎带,提升了电梯的性能。我在整体结构上增加了一个调度器,用于给电梯分配请求,并且给电梯封装了up,down,open,close等方法。使程序的可读性更好。

     这一次的评测限制了CPU时间,所以必须使用wait和notify来进行线程控制。

    方法复杂度:

    本次增加了调度算法,所以方法复杂度比上一次稍微高了一点。

    同步控制

    由于本次新加了一个调度器,主线程以及电梯线程都需要访问调度器,考虑到线程安全问题,把调度器的方法都设置为synchronized方法。

    第七次作业

    本次作业的三部电梯,部分请求需要换乘以及电梯的载客量有限制。我新加了Person类代替原有的PersonRequest类以便更改请求。其他地方的修改并不是很大。

    复杂度:

    本次的方法复杂度控制得并不是很好。

    BUG分析

    前两次我在强测和互测都没有出现BUG,但在第三次出现了比较严重的BUG。出bug原因的是:我将最后一个输入的请求是否到达作为了判断程序结束的条件,这显然是有问题的,但我在过了中测之后就没有再做测试,没有发现这个bug,导致强测挂了很多点。

    这也提醒了我在后面的作业中,对自己的程序进行充分测试是必不可少的。

    互测

    我在互测的做法是随机生成数据测试,但是没有进行定时投放,所以效果并不是很好。

    心得体会

    本单元学习了java多线程编程,让我对线程的理解更加深入,同时面向对象的思想也有了一定的提升。最后一次作业的bug也让我意识到了测试对验证程序正确性的重要性。

  • 相关阅读:
    Learning Experience of Big Data:The First Day-Try to set up a network connection on my virtural machine
    Learning Experience of Big Data: Learn to install CentOs 6.5 on my laptop
    事物总线模式实例——EventBus实例详解
    软件架构——事件总线模式
    阅读《大型网站技术架构》,并结合"重大需求征集系统"有感
    淘宝网的六个质量属性
    读架构漫谈博文有感
    06软件需求读书笔记(六)
    .NET应用程序性能优化
    【转】消息队列设计精要
  • 原文地址:https://www.cnblogs.com/mjmj111/p/10744581.html
Copyright © 2011-2022 走看看