-
OO第二单元总结
OO第二单元总结 同步块与锁 在第一次作业的第一个版本中,由于最开始思路不清晰,我给一个电梯开了3个线程,分别是计算线程、电梯运行线程和乘客上下线程,三个线程之间需要相互通信,共享数据杂糅导致我第一个版本的电梯对4,5个共享对象分别加了锁,形成了很多层锁的嵌套。而为了解决死锁的问题,我希望每个syn -
OO - 第二单元总结
OO第二单元总结 第一次作业总结 分析 在本单元我们的任务为设计并实现一个多线程电梯,并且构造策略实现接送乘客于出发地和目的地 本单元为多线程的应用,对每一个有可能线程不安全的变量或者方法,都要通过加锁构造为 线程安全 使用 生产者-消费者 模式,与 乘客-电梯 相对应 使用 策略类—电梯类 分离模 -
OO 第二单元总结
第一次作业设计 代码架构 |- InputHandler 输入类,线程 |- Elevator 电梯类,线程 |- Request 单个请求 |- RequestQueue 等待队列,为Elevator与InputHandler的公有对象 |- OutputHandler 输出类 |- MainCl -
面向对象第二单元个人总结
第二单元总结 1.第五次作业 在第五次作业中,我采用的是一个等待队列配对一个电梯的方式,设置了电梯线程和输入线程。 1.1 同步块的设置和锁的选择 对于锁的选择上,为了防止莫名其妙的问题,加上我并不太了解其他锁的方式,所以我直接采用的是方法加synchronized锁。显然这种方式会拖慢效率,因为可 -
OO_Unit2_Summary
心得体会 金钻以为他在学校或在给学生补习时,他正搭乘金属玻璃电梯直穿摩天建筑直达城市上空,脚下人间哆嗦的灯芒将明将灭,是他灵魂的夜景。事后降落回街上,人是个从母体脱落的空壳,从极高极高坠到了绝低绝低,走在茫茫人海里他是侥幸逃生的人。 丨钟晓阳《遗恨》 照例,我喜欢把心得体会写在一开头,让后来的读者先 -
BUAA OO 第二单元总结:自由竞争在横纵电梯问题上的扩展做法
OO第二单元总结:自由竞争在横纵电梯问题上的扩展做法 第一次作业 题目大意 五座楼初始各有一个竖直方向电梯,乘客起始楼座和目的楼座相同。 算法设计 纵向电梯调度:Look算法。具体实现为: 移动策略:初始电梯运行方向为上,请求到来之后判断与电梯运行同方向是否有请求(例如如果电梯运行方向为上,则检查当 -
OO第二单元总结博客
第五次作业 1.1 思路分析 第五次作业实现了五个楼座每个楼座单个电梯,以基本的消费者生产者模型为思路,一个输入类作为生产者线程,五个楼座的总共五个单部电梯作为五个消费者。构建自己的一个存放请求的线程安全队列,每个楼座对应一个队列,生产者线程将输入判断后添加到对应的队列中,电梯作为消费者从对应队列中 -
BUAA_2020面向对象_第二单元总结
BUAA_2020面向对象_第二单元总结 O、写在前面 第二单元相较于第一单元,相当于长眼睛与眼睛没长全的区别。这个单元崇尚设计优先的原则,在每一次动手写代码前,都将本次作业的结构图画好,将每一部分的实现与交互形成文字。然后开始写代码的时候,按图索骥即可。不得不说,这为我分析代码和修正bug带来了极 -
Java多线程程序设计总结——电梯
第一章 基本架构 第一次作业架构 二话不说,先上架构。 总体设计 总的来看,我的作业架构主要包括输入类(InputHandler),总调度器(Simulator),电梯类(Elevator),乘客类(Passenger),输出类(OutputHandler)。输入类不断将请求打包为乘客类后放入总调度 -
面向对象第二单元总结
面向对象第二章总结 1. 作业中的同步操作 第二章主题是多线程设计,因此作业的训练主要也是围绕多线程并发问题。我在这三次作业中使用的同步方法有synchronized, lock和readwritelock。 第一次作业中,由于需求简单,各个电梯任务独立,因此涉及的对象贡献资源只有每个电梯自己的候乘