-
OO第二单元-多线程
考虑到三次作业的迭代性,我将详细的文件结构、度量分析、UML协作图等都放在了task3的部分里,前两次就简单略过了。 task1 初识多线程时的个人思考 线程涉及 获取输入的线程:new Thread(new MyInput(sceduler)) 调度器线程:new Thread(scheduler -
BUAA-OO-2022-Unit2
面向对象设计与构造2022第二单元总结 零、任务简介 模拟一个多线程实时电梯系统。 系统基于一个类似北京航空航天大学新主楼的大楼,大楼有 A,B,C,D,E 五个座,每个楼座有对应的一台电梯,可以在楼座内 1-10 层之间运行。 系统从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要 -
BUAA-OO-Unit2 Summary
第二单元博客作业——电梯月 第五次作业 这次的作业为多部多线程ALS电梯,每个人只能在同一座做纵向运动。但这个多部是一个伪多部。因为它对应的是A-E座的各个电梯,每个电梯之间相互独立,不全在交互,完全等价,就是同一座电梯复制5次罢了。 作业思路 这是第一次接触多线程,在写代码和调试的时候也是遭受到了 -
BUAA_OO_第二单元总结
#BUAA_OO_第二单元总结 第二单元主要实现电梯的调度问题。主要为了实现单部电梯、多部电梯、横纵向电梯的调度。 ##第一次作业 ###作业要求 第一次作业要求完成纵向电梯第调度问题。五个楼座各配置一部具有一至十层移动能力的电梯。电梯具有固定的移动速度、开关门速度和承载量。 ###代码分析 类图 -
OO第二次总结
OO第二次总结 一、架构设计体验 本次作业的主要目的,是实现一个多楼座(A,B,C,D,E)、跨楼座运行,支持换乘,调度等功能的多线程电梯。 对于该问题,我主张采用经典的生产者-消费者模型。从Person类出发,构建了相应的共享资源,Table,Dispatcher等等。 线程及同步控制块与锁 在这 -
第二单元总结
第二单元总结 1. 作业分析 模拟多线程实时电梯系统,支持换乘。 2. 架构设计 对每个楼层、每个楼座单独构建一个等待队列(PassengerGroup的实例),5个座、10层,共构建15个等待队列。每个等待队列负责该楼层或楼座的全部乘客,该楼层或楼座的所有电梯共享一个等待队列。 Controlle -
BUAA-OO-Unit2
OO_UNIT2 一、作业分析及多线程编程 本单元的作业要求我们使用多线程的方式来实现电梯系统,即在同一时间内实现多部电梯对于多个请求的响应。 在多线程的编程实现中我们理想化的结果是多个线程并行运行的过程中能够对于共享对象进行安全的操作,最终实现线程安全的基础上实现更高效率。 由上面的描述我们已经可 -
BUAA-OO2022-UNIT2总结
一、前言 本单元主要是通过电梯系统来训练多线程的相关应用。个人认为在难度跨度上没有第一单元那么大,但是debug的难度大大增加,对于加锁部分也更需要逻辑清晰、结构合理。本人第一次借鉴实验课的架构,把个人认为多余的调度器删除,之后在架构上都没有太大的改动,主要是增加各种“补丁“。但是综合来看思路还是不 -
第二单元总结
第二单元总结 一、三次作业架构设计 1、第一次作业 第一次作业需要实现每个楼座只有一部纵向电梯的调度与运输,因此我采用了生产者-消费者模型,将输入的请求放入等候队列中,由调度线程根据请求到达的早晚来将请求分配给不同的电梯,而电梯则在运行过程中根据ALS算法判断应该在什么时候开关门以及运送哪些乘客。其 -
BUAA_2022_OO_第二单元总结
#线程安全——同步块与锁 在三次作业中,我均选用了synchronized锁。一方面,它实现简单,可自动释放,不容易出bug;另一方面,作业中的读写操作都比较简单,读读、读写、写写均互斥也不会造成太大的性能影响。 ###第五次作业 所有同步块均设置在共享对象类RequestQueue的方法中,所有加