第二次博客总结

1.最近三次作业均应用多线程方法实现目标:多线程电梯,IFTTT文件监控,模拟出租车系统。每次作业也着重强调线程安全,要求设计线程安全类。注意线程交互。

(一)多线程电梯

  本次作业有三部电梯,一个调度器,一个请求输入以及请求队列。调度器、请求输入共享请求队列资源,因此需重点关注各个线程对请求队列的访问及写入过程,即给有关过程上锁。调度器通过不断在请求队列中获取请求,再依据电梯状态进行请求分配,进而让某部电梯处理请求。作业难点在于调度器对请求的分配,个人认为自己的设计方法存在很大缺陷。

  2.Metric分析

 

bug分析

  本次bug主要原因是设计不全面,对同质、捎带等请求的处理未设计完全,故而造成bug;其次因为对不符合输入格式的请求的输出问题上的粗心处理,也造成了一些bug,这种bug不应出现,希望以后不会再出现。

  所有的bug都与线程安全无关,这也是比较满意的一点,至少在这一点上达到了课程的要求。

(二)IFTTT

扫描二维码关注公众号,回复: 98511 查看本文章

  本次作业要求设计一个文件监控系统,对监控的文件的相应改变做出相应的响应。我的设计是对每个文件建立一个监控线程。后来才发现这种设计非常不合理。同时还有一个输出线程,将信息输出到文件中,在此学习到了流的概念,也是用文件输出流进行输出到文件中,这里就会涉及到线程安全的问题,因为输出信息时可能也会同时被改变,所以对相应信息的输出代码块需要上锁。

  Metric

bug分析

  因为设计的不充分,我的程序并不能处理太多对目录的监控,因此公测中有关目录的点错了大半;互测部分,遇到了一位非常友好的大佬,指出了几个设计上的缺陷,我的线程一直不会关闭、我的类中的元素本次未封装等等。本次互测中确实学习到了一些代码风格。完善了自己的代码。同时,本次也未出现线程安全类的bug。

(三)出租车系统

  本次作业中模拟100辆出租车,在80*80地图中运行、接单、送客等,本次作业直接提供了一个GUI,实现了地图以及出租车的可视化,这对写作业以及调试提供了极大的帮助,本次作业的关键位获取最短路径以及按照最短路径运行,这些可通过对GUI类中的相应代码修改得到。

   Metric

bug分析

  由于读入请求以及处理请求的时间性,无法满足对同质请求100ms内的要求;因未考虑代码执行耗时而直接使用sleep(300)导致bug。

  对于指导书要求的接口方法,由于不认真,写完后未深入检查,造成ERROR.

心得体会

  预先的结构分析、线程交互分析以及线程安全的考虑是相当必要的,可以极大的提高编程的效率。

  现在编程时也开始逐步体会并遵循代码设计原则,努力往其方向靠近。

  通过不同类型的作业,慢慢的认识到了JAVA的博大,我们现在所学到的还只是冰山一角。希望可以学习到更多神奇的方法。

猜你喜欢

转载自www.cnblogs.com/huiyan/p/8978126.html