第二单元OO总结】的更多相关文章

目录 前言 一.第一次作业分析 1. UML及复杂度分析 二.第二次作业分析 1. UML及复杂度分析 2. 性能优化 2.1 楼层类的实现 2.2 调度算法 3. bug分析 三.第三次作业分析 1. UML及复杂度分析 2. Bug分析 四.评测机的搭建 1. 整体框架 2. 正确性检测 五.多线程的调试   前言 这三周以来的OO多线程 + OS实验关键期 + OS理论课期中考试 + 每周一次去学院路的答辩 + 每周日一上午的行进管乐团训练 + 每周日一晚上的交响乐团排练 + 其它各种琐事…
前言 ​ 第二单元 OO 作业的主题是多线程,课程组通过了电梯调度这个经典问题考察了多线程的调度. ​ 从第五次作业到第七次作业的迭代为,单部多线程可捎带电梯,多部多线程可捎带调度电梯(电梯属性相同)和多部多线程可捎带调度电梯(电梯属性不同,包含需换乘请求) 一.作业分析 作业分析将通过代码复杂度度量,UML 协作图,扩展性,优缺点等方面进行分析 第五次作业 ​ 第五次作业的任务是完成单部可捎带电梯的调度. 设计分析: 第一次多线程作业中,我初步设想的是有三个线程,一个输入线程,一个调度线程,一…
oo第二单元博客总结 在第一单元求导结束后,迎来了第二单元的多线程电梯的问题,在本单元前两次作业中个人主要应用两个线程,采用“生产者-消费者”模式和共享数据变量的方式解决问题.在第三次作业中加入多个电梯线程以后,沿用之前的模式,但是在控制线程的地方进行了部分相应的修改保证任务的完成. 第一次作业—傻瓜电梯 第一次作业是没有任何调度算法的傻瓜电梯,生产者生产请求,将请求加入存储的仓库队列.消费者消费请求,循环从仓库中取出请求,取出一个请求即运送他,直至运送完毕后,再进行循环. 下面是第一次作业的类…
OO第二单元优化博客 第五次作业没有性能分,但是,我在这一单元的宗旨就是写一个日常生活中 最常见的那种电梯,所以第五次我没有写傻瓜电梯,而是直接写了个\(look\),和第六次基本相同. 总计一下look算法的几个特点: 1.没有主次请求的区分. 2.电梯会一直往当前方向运行直到需要转向,转向条件为: ​ (1)当前电梯中没有乘客的目的楼层在当前方向上. ​ (2)当前方向上的楼层目前没有请求. 3.捎带时只捎带请求与当前方向相同的乘客. ​ (由于第五次第六次作业没有容量限制,所以可以把当前楼…
第二单元作业的完成史,就是一部心酸的血泪史…… 多线程的出现为我(们)打开一片广阔的天地,我也在这方天地摸爬滚打,不断成长!如果说第一单元之前还对Java语法有所了解的话,那么这单元学习多线程则完全是从0积累的一个过程.每一步,都走得很艰难!虽然我犯过很多错,但我很庆幸,我坚持到了最后! 写在前面 单线程:Java程序在虚拟机上运行,一个Java程序对应一个JVM实例,同时对应一个主线程(即main),程序入口从main进入,运行完毕从main退出. 多线程:顾名思义,即不止一个main线程,m…
OO第二单元作业总结 在第二单元作业中,我们通过多线程的手段实现了电梯调度,前两次作业是单电梯调度,第三次作业是多电梯调度.这个单元中的性能分要求是完成所有请求的时间最短,因此在简单实现电梯调度的基础上,我还使用了一些调度算法来追求性能分,但是效果上不是很理想,只能勉强获得90分,在这里我想把我自己的做法写出了,供大家参考. 本次作业分为以下部分,三次作业实现介绍(包括调度方法), 总结作业.请读者各取所需. (注:本次电梯的全部调度算法仅针对作业题目,对实际情况并不相符) 三次作业实现 第一次…
前言: 第二单元总共包括三次电梯调度作业.这三次作业在笔者看来是为了让学生了解什么是多线程,多线程的好处及可能存在的潜在问题,对于多线程的安全问题应该如何解决和保证结果的唯一性和正确性.那么接下来笔者将结合三次电梯调度作业来谈谈在这三次作业中我都收获了哪些. 第五次作业: 结构分析: 代码分析: 第五次作业相对来说结构比较简单:Main方法调用静态对象调度器,然后作为参数传入输入和电梯实例出来的两个对象中,最后开启这两个线程.唯一需要注意的就是对调度器中任务链表进行操作的时候一定要记得加锁,也就…
OO第二单元小结 一.三次作业代码分析. 1.第一次作业 第一次作业是单部电梯的傻瓜调度,由于其过分傻瓜,所以第一次作业我只有两个类,一个main,一个电梯,main类负责不断从输入流中读取命令,如果输入空则退出,否则将这条命令交给电梯去run,而电梯需要做的事情就是从当前楼层去接人,然后将之送达目的地即可.第一次作业基本没有使用多线程的思想,但是正确性是无懈可击的. 其实为了学习和使用多线程知识,我也写了一个多线程版本的傻瓜调度,其设计与第二次作业几乎相同,不同点就只在电梯的运行方法上有所不同…
OO第二单元多线程电梯总结 第一次作业 设计思路 Input为输入线程,负责不断读取请求并将读到的请求放入调度器中. Dispatcher为调度器,是Input线程和Elevator线程的共享对象,采用单例模式.Dispatcher中list为请求队列,over为输入线程结束的标志,当输入线程读到null时,将over设为true. Elevator为电梯线程,采用傻瓜调度(FAFS). 代码分析 SOLID原则分析 Input线程负责输入,elevator线程负责取指令执行的单一负责线程比较好…
总述 OO的第二单元主题是电梯调度,与第一单元注重对数据的输入输出的处理.性能的优化不同,第二单元的重心更多的是在线程安全与线程通信上.这此次单元实验之前,我并未对线程有过了解,更谈不上“使用经验”,整体上第二单元三个实验也做的较为吃力.三次实验,也算是对线程的一步步入门吧,以及由于对于线程不是很熟悉,所以我总是下意识的把程序分割,尽量减少通信量. 第一次实验 基本需求:单电梯.无捎带要求.基本无性能要求. 基本实现:一个主线程或者一个主线程与一个电梯线程 我采用的方法是使用一个主线程,因为实际…