博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第二次博客作业
阅读量:5830 次
发布时间:2019-06-18

本文共 1116 字,大约阅读时间需要 3 分钟。

第二次博客作业

 

       在五六七次作业中,线程安全问题一直是个难点也是重点,稍微不注意就会有线程间的共享资源被不安全使用从而导致程序出现bug甚至崩溃,所以解决线程安全问题是一个很重要的环节。

    线程安全问题的解决有多种,我个人比较喜欢使用简单粗暴的synchronized。Synchronized因为简单适用所以效率肯定会不如其他的方法,但依照现在作业的规模看这个影响并不大。查阅资料可以知道synchronized常用的有两种方法:synchronized方法和synchronized块(也可以synchronized属性,比如在上一次的上机课中就有出现,但个人感觉使用较少)。在完成作业的过程中,个人更多的习惯synchronized方法,简单易操作,不需要过多的考虑过程,只需要在感觉需要互斥访问的方法前加上该关键字就好;但是synchronized块就需要对自己程序的可能产生线程安全问题的资源有充分的认知,这样就能够精准地处理好线程安全问题,又由于可以针对任意代码块,所以更加灵活。

synchronized方法使同步锁的范围较大,而synchronized块可以让同步锁的范围变得很小,很显然synchronized方法在方法的规模越大时,性能越差(跟之前一样,这在我们的作业中感觉影响也是很小的)。但是灵活使用synchronized块的话就可以很好的解决这个问题。

    出租车作业分析:

总体分为三大方面:请求方面,出租车方面,调度器方面,地图方面;

请求方面:从控制台得到请求,生成请求队列

调度器方面:处理请求队列,并将结果发送给出租车

出租车类:按照状态转换规则来行驶,接受调度器调度,自主寻找路径

地图方面:生成地图,地图相关信息的初始化

 

类图

 

 

类的度量

 

 

可以看到taxi类非常臃肿,这和一开始的程序结构的设计失败有着很大的关系,这导致在后续的debug过程中非常的难受。所以在在以后的作业中应该提前的准备好程序结构,这样会起到事半功倍的效果。

并且由于欠缺考虑,程序在一些极端的地方出现了几个bug,比如起始点相同的情况,恰好一车多单的情况。

通过这几次作业我觉得在每一次周作业之前都应该认真的阅读指导书,通过指导书的要求来设计程序架构,这样可以思路清晰的完成程序,并且在debug时更加容易。并且自己应该仔细的考虑可能出现的情况,让程序能够经得起测试。然后自己在写程序时发现类之间的应用思路并不是特别清晰,往往在遇到相关麻烦时就简单粗暴不顾后果的将一个类引用到另一个类中,在以后的作业中应该在这个地方特别留心。

转载于:https://www.cnblogs.com/qiaolan/p/8979645.html

你可能感兴趣的文章
Centos7重置root密码的方法(亲测有效)
查看>>
mysql的三种安装方式:RPM 二进制包和源代码
查看>>
Web安全测试之XSS
查看>>
OpenCV 基于超像素分割的图像区域选取方法及源码
查看>>
c#异步调用的几种方式
查看>>
我的周记4——“要繁荣富强,不要再让人欺负了”
查看>>
处理表格撑破列宽,但是列过多时,仍然会撑破,暂解决 15 列左右的表格 。...
查看>>
Beta 冲刺 (5/7)
查看>>
8816
查看>>
Linux的标准输出、标准错误输出、nohup
查看>>
git---分支的合并
查看>>
查看oracle数据库的链接数和用户
查看>>
SparkSQL之UDAF使用
查看>>
随笔分类汇总目录
查看>>
linux驱动之poll操作
查看>>
setTimeout方法
查看>>
Hadoop- Hadoop环境搭建
查看>>
调试技术的优势
查看>>
牛的东西
查看>>
Python基础之杂货铺
查看>>