一、第五次作业:

类图:

度量图:

主调度线程和等待队列一直循环扫描,易出现多层嵌套,以后尽量解决这一问题

时序图:

 

自己的BUG:

别人的BUG:

拿到的代码接近(甚至可以算是无效作业),到处都是漏洞,基本上没有可以运行的指令。

心得体会:

初次接触多线程,感觉难度有点大。

第一次写,加的锁也都非常乱,给一段代码加对象锁,好在我的共享对象一直只有那一个,不会出现死锁的问题。

二、第六次作业:

类图:

 

度量图:

emmm监控线程因为需要循环扫描至使嵌套太深,以后多加注意

时序图:

 

自己的BUG:

因为没有来的及写目录监控,被报了6个BUG,文件类的监控没有问题。

别人的BUG:

因为当时没有时间细测,他的程序可以实现监控功能,但是对象有时候会混乱,识别到变化的不一定是真正发生变化的那个对象。比如,你重命名了file.txt文件,但是他记入detail的是,你重命名了file1.txt文件。而且有时候还会记入多次,这个可能是多线程控制那里出了问题。

心得体会:

IFTTT绝对是我最糟糕的一次oo作业了,可能是上次的多线程电梯并没有带给我太大的冲击,因此没有特别紧张的对待这次作业。事实上,这次作业的难度并不在线程控制,而在对文件操作的理解还有那些复杂的文件操作上面。

至于这次作业的多线程问题,因为构建了一个线程安全类,线程安全问题迎刃而解。在构造对象锁太过杂乱复杂的时候,我们应该想起去构造线程安全方法,从而构造线程安全类。

三、第七次作业:

类图:

 

度量图:

输入处理上总是出现嵌套太深,这个以后尽量改进

 时序图:

 

 

 

自己的BUG:

因为粗心,readme没有写清楚我只在坐标小于10时支持一个前导0,其他情况下都不支持前导0,被人报了一个ERROR,正在申诉改成INCOMPLETE。

还有1个ERROR和1个CRASH正在申诉,我实在不知道为什么在他那运行不正确,我怎么试都是对的。

别人的BUG:

emmmmm,再次因为时间原因,没有给他互测.....

心得体会:

出租车并没有学长学姐描述的那样简单,难度上可能降低了一些??但是复杂程度并没有减少,花费的时间还是很长。

再加上此次作业的要求比较多,要用上GUI啊,接口啊,十四个原则啊什么的,虽然最后实现起来也很简单,但总是给人造成心理上巨大的压力。

这次作业在线程控制上,我同样采取了线程安全类的构造方式,将我的出租车调度类的一些方法都设为线程安全方法(加锁),出租车调度和用户都可以安全调用这些方法。

四、总结

通过该阶段对多线程的学习了解,我渐渐体会到了并行思想的美妙,让自己的程序模拟真实场景,达到想要的功能。

我觉得多线程需要注意的就是两点:1.记得加锁 2.不能死锁,能够灵活正确的使用这两点就是我们现阶段多线程学习的主要目标。

posted on 2018-05-02 15:38  LuZZhang  阅读(139)  评论(0编辑  收藏  举报