• OO第二单元作业总结


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

    第五次作业分析

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

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

    方法复杂度:

    方法复杂度都比较低。

    第六次作业

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

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

    方法复杂度:

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

    同步控制

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

    第七次作业

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

    复杂度:

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

    BUG分析

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

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

    互测

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

    心得体会

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

  • 相关阅读:
    mybatis显示sql语句 log4j.properties配置文件
    Netty 4.0 demo
    Netty多线程处理机制
    crontab定时任务中文乱码问题
    linux grep、find 命令详解
    resin access.log format配置详解
    linux top命令详解
    正则表达式介绍及案例分享
    java定时任务
    rhApp遇到的项目问题
  • 原文地址:https://www.cnblogs.com/mjmj111/p/10744581.html
Copyright © 2020-2023  润新知