-
OO Unit-2 Summary
OO Unit-2 Summary 第一次作业 同步块的设置和锁的选择 在本单元的作业中,我选择了以JVM实现的synchronized作为锁。用生产者和消费者模式对应本单元的作业,可以发现,共享的“托盘”只有电梯的等待队列,一方面,输入处理线程要将新的请求放入等待队列,另一方面,电梯不断读取处 -
BUAA_OO Unit_2
伴随着一路艰辛,oo的第二单元正式告一段落,无论是对作业的回顾,还是自己走过这一单元的心得,正好也就借此博客一书胸臆; 好了,文青的话结束了 总而言之,欢迎大家看我的博客,顺便给几个赞呗 单元回顾 本单元以电梯调度为背景,聚焦于多线程的设计和处理 第一单元 存在A、B、C、D、E五栋楼,每栋楼存在一 -
北航2022面向对象第二单元:多线程控制
北航2022面向对象第二单元:多线程控制 内容概括 单元重点 作业设计思路 作业实现和分析 作业的问题 总结 1. 单元重点 1.1 多线程概念 如果所有程序都操作的是不同的对象,彼此之间没有干扰,那么多线程和单线程差不多。 多线程麻烦在于不同的线程操作同一个对象时,由于线程调度是内置的逻辑决定,线 -
2022年北航面向对象程序设计第二单元总结
2022年北航面向对象程序设计第二单元总结 今年的第二单元的各个拓展还是很好猜测到的,我在第二单元三周的架构都可以满足最终的课设要求,由于我的第一周的架构的线程安全问题解决的困难性很高,最终选用的架构是第二周所写的非常简单的look+自由竞争策略~~(原因为什么后面再说)~~,第三周相对于第二周的添 -
面向对象第二单元博客
#第一次作业 ## 作业内容 第一次作业的要求为仅有五部跨楼层的电梯。乘客的请求也仅仅是同一楼座。可以看出第一次的作业要求较为简单,主要是熟悉多线程的相关实现。 ## 实现方式 #### 线程 在这次作业中,我采取了三组线程——输入线程,调度器线程,电梯线程。三者共享两组队列,该两组队列即为同步块。 -
OO_Unit2_blog
Hello, elevators! -
OO第二单元总结
OO第二单元总结 摘要 第一次作业:基本目标是模拟多线程实时电梯系统,模拟多部同型号电梯的运行,熟悉线程的创建、运行等基本操作,熟悉多线程的设计方法; 第二次作业:在第一次作业的基础上,掌握线程安全知识并解决线程安全问题,同时在架构上围绕线程之间的协同设计层次架构,模拟一个多线程环形实时电梯系统。 -
BUAA_OO_2022第二单元电梯多线程总结
第二单元总结 1. 总结分析三次作业中同步块的设置和锁的选择,并分析锁与同步块中处理语句之间的关系 同步锁synchronized 修饰实例方法:作用于当前实例加锁 public class ReqBuffer { public synchronized void addRequest(MyRequ -
OO 第二单元总结
OO第二单元总结 第一次作业 题目要求 A、B、C、D、E五栋楼均有10层,每栋内有一座纵向电梯,输入为同一楼座不同楼层的请求。需要模拟电梯的运行,并输出开门、关门、乘客进出信息。 设计思路 参考了实验的思路,建立输入线程、控制器线程、电梯线程,建立请求队列类。输入线程将输入的请求放入一个请求队列, -
面向对象设计与构造第二单元总结
作业分析 第五次作业 题目简述 使用多线程模拟五座楼中每座一个电梯的运行、开关门、上下客。 电梯能到达 1-10 层,所有电梯人数、运行速度固定。 思路简述 设置一个输入线程,一个调度器线程,五个电梯线程。 输入线程读入请求,送到调度器,调度器根据楼座分配给电梯,电梯内部根据特定策略模拟行为。 具体 -
2022_OO_Unit2
2022_oo_Unit2 本单元作业为电梯调度,重点考察多线程编程。作业背景为初始有5栋楼,每栋楼10层。在每一楼层会存在乘客发来请求,请求会告知出发地和目的地,要求采用合理的调度方式,把每位乘客送至目的地。 第一次作业 要求:每栋楼各一部电梯,保证乘客不会发出跨楼座请求。 架构设计 架构和策略实 -
面向对象程序设计第二单元总结
一、写在前面 “清明时节雨纷纷,电梯行人欲断魂”。从清明到五一,电梯系列问题陪伴我走过了一个月。在这一个月的学习中,我初步学习掌握了多线程编程的技巧,也在不断的试错中认识到多线程编程可能出现的各种问题。无论如何,顺利度过电梯月还是一件值得欣喜的事。在此,谨以本文作为电梯系列的收尾,也借此机会总结回顾 -
OO第二单元总结
OO第二单元总结 架构设计 三次作业中我逐步形成了如下的架构设计: 运行策略 电梯运行策略为ALS策略,即确定主请求后再考虑捎带请求。 RequestQueue的子类中把请求分为已分配的请求和未分配的请求。当电梯发出分配请求时,会根据电梯当前状态(运动方向、所在楼层、所在楼座)以及等待队列中乘客的具 -
BUAA_OO_Unit2 单元总结
BUAA_OO_Unit2 单元总结 整体概述 本单元聚焦的问题是多线程场景下如何进行程序开发以及维护线程的安全性问题。第一次作业中的通过模拟多部纵向电梯的运行来引入多线程的开发模式;第二、三次作业则在此基础上进行增量开发,涉及到了不同线程之间进行数据交互,以及由此可能带来的线程安全问题。 总的来说 -
OO第二单元总结
OO unit2 需求迭代 第一次作业 输入:只有乘客的搭乘请求,搭乘请求为纵向 一共有五台纵向电梯,分别对应五个座ABCDE 第二次作业 输入:乘客的搭乘请求,搭乘请求为纵向或者横向;电梯的增加请求 初始有五台纵向电梯 第三次作业 输入:乘客的搭乘请求,搭乘请求为纵向或者横向或者任意;电梯的增加请 -
OO Unit2
第一单元总结 第一次作业 第一次作业是构思时间最长的一次作业,目的是为了使后面的作业能够有一个更完整的架构,电梯作业分为以下几个部分:电梯线程,输入线程,乘客类,安全输出类,请求队列。 经过代码分析得知,各个类的代码复杂度维持在可控的范围内,只有电梯线程中的开关门方法复杂度较高,因为需要频繁地访问请 -
OO summary Unit 2
unit 2 总结 本次OO第二单元实现的主要任务为模拟了一个多线程电梯运行的基本场景,**基于“生产者-消费者模式”**实现了满足不同的电梯调度以及运行策略达到满足用户上下楼、换乘等请求的电梯。 不得不说比起往届的博客,可以看出这届的助教还是收手了的,让我们在这一单元的编程充实快乐但又不失必要的痛 -
OO第二单元总结
OO第二单元总结 作业总结 第五次作业 作业简介 这次作业是编写一个简单的多线程实时电梯系统,实现模拟五部电梯接送乘客的功能。 类图与协作图 类图如下: 协作图如下: 各个类含义如下: Main:主类Person:乘客类/请求类AllTable:全局Table(后来发现其实和控制器类似)Table: -
第二单元总结
总结分析三次作业中同步块的设置和锁的选择,并分析锁与同步块中处理语句之间的关系 三次作业中,我都把同步块放在队列类和输出类中,其他地方没有锁或同步块。这样缩小了同步的范围,降低出现同步BUG的概率。 进入同步块相当于获得锁,退出同步块相当于释放锁,但使用锁更灵活,可以自由控制获得和释放锁的时机,而不 -
BUAA_OO_第二单元总结与反思
锁的应用 读写加锁 synchsynchronized (outlist) { boolean a = inup_h(nowpos); } public boolean inup_h(int nowpos) { for (PersonRequest personRequest : list) { i