-
北航20级oo课程第二单元总结
第二单元总结 第二单元要求我们搭建一个多线程的电梯系统,由于是第一次接触多线程问题,在设计代码架构时,很容易会出现线程安全问题,这类问题在复现上十分困难,因此非常考验我们对线程安全的理解。下面我将阐述自己的作业设计。 hw5: 作业要求: 要求实现纵向电梯的调度,保证乘客出发楼座与目的楼座一致。 作 -
BUAA_OO第二单元总结
第二单元作业总结 一、整体架构设计 (注:输出类仅仅是对原有输出方法进行了封装,以下未单独列出。) 1.1 第一次作业 本次作业参考了实验课上的架构: 主线程main设置初始变量、创建类、启动线程。 输入线程input专门处理输入请求,并将该请求传入主调度类。 主调度线程schedule处理来自输入 -
面向对象课程第二单元博客总结
单元总览 本单元我们学习了Java多线程。通过电梯这一现实情景,体会了如何利用多线程机制完成多个并发任务以提高CPU利用率;对于线程安全有了一定概念,在实践中认识到多线程使用共享数据会面临的数据安全问题,并学会了使用同步块和锁来设计线程安全的程序。 与此同时,我们还学习并实现了生产者-消费者模型、单 -
OO_UNIT_2 总结
OO_UNIT_2 总结 HW5 需求分析 实现基本的电梯运行模拟,电梯种类单一(有且仅有纵向电梯),速度统一,载客容量统一,不可新增电梯;乘客需求,局限于同一楼座不同楼层,不存在跨楼座需求。 架构设计 1.乘客:Passenger // 乘客id private Integer id; // 乘客 -
BUAA OO第二次作业总结
OO第二单元总结 概况 第二单元的主要任务是模拟多线程实时电梯系统,第一次作业中,各个电梯之间没有任何联系。而在第二次作业和第三次作业中,由于我采用的是自由竞争策略,相同类型的电梯之间需要共享同一个候程队列,故各个电梯线程之间增加了协同处理关系。在第二次作业在第一次的基础之上中增加了横向电梯,故我们 -
BUAA_OO 第二单元总结——电梯
前言 第二单元的主要内容是多线程电梯的搭建,难度不大,关键在于对于多线程的理解以及对锁synchronize的使用上要多加注意。加锁这块还是很有意思的,我在第三次作业加锁那部分卡了很久,才明白了锁怎么加的。 第二次作业的代码量以及难度无疑小了很多,这单元的第一次作业(164行)写完了之后回顾上一的第 -
OO第二单元作业——电梯系统调度
OO第二单元作业——电梯系统调度 一、总体设计架构 OO课程第二单元的主题为电梯系统的设计。这个电梯系统包含了A,B,C,D,E五个楼座和1~10十个楼层。对于每一位请求乘坐电梯的乘客,需要有电梯将该乘客从其出发地点运送到目的地。由于多部电梯在同时运行,我们需要采用多线程的编程模式来设计电梯调度系统 -
BUAA-OO-第二单元总结
北航计算机学院面向对象第二单元总结 一、第一次作业总结 UML类关系图 UML类协作图 同步块的设置和锁的选择 第一次作业架构简单,采用两级生产者-消费者模式,其一为Input-Dispatcher组合,其二为Dispatcher-Elevator组合。因此涉及到的共享数据只有两个组合分别共用的托盘 -
OO第二单元实验总结报告
一. 同步块与锁 在本人的架构当中,共享对象是Controller,或者更准确的来说,是其中的waitQueue。在输入线程requestInput向其中添加请求,而Controller通过计算将相应的请求分发给Elevator。在这个过程中涉及到了对waitQueue的添加、遍历与删除,所以对它的 -
BUAA OO 第二单元作业总结
BUAA OO 第二单元作业总结 一、题目简介 此单元作业为模拟多线程实时电梯系统,第五次作业为模拟各楼座的纵向电梯,第六次作业模拟纵向和横向电梯,第七次作业增加乘客的换乘请求 二、架构模式 (一)第五次作业 各个类如下所示: |- MainClass:主类 |- Controller:电梯管理器,