-
面向对象程序设计第二单元总结
OO 第二单元总结 一、同步块的设置和锁的选择 第五次作业 在第五次作业中,我编写了一个RequestQueue 类。这个类作为调度器和电梯线程之间的桥梁:调度器Scheduler 可以向这个类中传入请求(用Req类表示,下面相同),而电梯线程类也可以从每个线程自身的请求队列中读取请求并进行处理。 -
OO第二单元总结
一、同步块的设置和锁的选择 设置同步块其实只需要搞清楚哪些资源需要共享即可。我在三次作业设置的共享资源具有同一性,均为输入类Input与调度器类Schedule之间共享的待调度请求队列waitQueue、Schedule类与电梯类Elevator之间的待处理队列processingQueue以及整个 -
OO_Unit2_单元总结
OO_Unit2_单元总结 Part0 综述 本单元三次电梯作业依然是在逐次迭代的基础上进行开发的。其中第一次作业要求我们实现一个每座只有一个纵向电梯,无新增加电梯的请求并且乘客的请求仅限于同楼座不同楼层的电梯系统。第二次作业相较于第一次作业添加了横向电梯的概念,并且可以通过请求增加横向电梯或者纵向 -
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 一、作业分析及多线程编程 本单元的作业要求我们使用多线程的方式来实现电梯系统,即在同一时间内实现多部电梯对于多个请求的响应。 在多线程的编程实现中我们理想化的结果是多个线程并行运行的过程中能够对于共享对象进行安全的操作,最终实现线程安全的基础上实现更高效率。 由上面的描述我们已经可