-
OO第二单元作业反思
OO第二单元总结 第五次作业 锁和同步块 此次作业中采用了线程安全容器——ArrayBlockingQueue作为请求的存储容器。 ArrayBlockingQueue有以下两个方法: take():取走 BlockingQueue 里排在首位的对象,若 BlockingQueue 为空,阻断进入等 -
OO第二单元总结
OO第二单元总结 作业综述 本单元的训练主要目的是目标是模拟多线程实时电梯系统,熟悉线程的创建、运行等基本操作。作业的核心内容为实现一个多线程的目的选择电梯调度控制系统,并要求按固定格式输出电梯运行过程中电梯到达楼层和开关门的信息以及乘客进出电梯的信息。其中,第一次仅有 纵向电梯,第二次增加了横向电 -
OO 第二单元总结
OO 第二单元总结 一、作业架构设计与分析 1、homework5 1.1 UML 类图 1.2 UML 协作图 1.3 架构设计 请求处理方式 在此次作业中我采用了生产者消费者模式,InputThread 线程获取输入请求,再通过 NewMainBuilding 线程分发给各个楼座(SubBuil -
BUAA_OO_Unit2 总结
电梯单元总结 锁与同步 锁的选择 第一次作业中,由于对锁与同步的陌生,我选择了最简单的实现方式:在线程中,只要遇到读写共享对象的情况,就将这段读写代码放在同步块中,比如 public class Elevator extends Thread { ... private void look() { -
OO 第二单元总结
OO 第二单元总结 1作业综述 本单元作业共计三次,核心内容为迭代开发java程序模拟电梯的运行,要求按固定格式输出电梯运行过程中电梯到达楼层和开关门的信息以及乘客进出电梯的信息。其中,第一次仅仅有5个纵向电梯,第二次在第一次的基础上增加了横向电梯,并且允许动态增加电梯数量,但是乘客只会请求乘坐纵向 -
北航OO第二单元总结
第二单元我们在第一单元单一进程面向对象的设计基础之上,进一步学习和练习使用了多进程。目标是模拟多线程实时电梯系统,熟悉线程的创建、运行等基本操作。 一、同步块的设置和锁的选择 本单元主要用到“生产者-消费者”模型。在作业中,对控制器中的主从请求的添加与获取采用了 synchronized 关键字加锁 -
OO_第二单元总结
#OO_第二单元总结 ##第一次作业 架构 我采用的是生产者-消费者模型。有一个读入线程负责读入请求并发送给调度器。用一个调度器当输入请求来临时,由调度器分配给五个楼座的电梯线程去执行运送任务 ###同步块和锁 输出线程:为保证TimableOutput。println()的线程安全,我创建了一个新 -
2022-OO-Unit2
2022-OO-Unit2 mashiroly 1. 总体思路 本单元的需求是模拟多部电梯的调度,重在设计出多线程安全并发协作的架构。基本思路仍是“生产者-消费者”(Producer-Consumer)模式,固定“生产者”和“消费者”,面对不同功能构造不同“盘子”。电梯的运行策略经历了ALS策略 -
BUAA_OO_第二单元作业总结
BUAA_OO_第二单元作业总结 简述 第二单元学习的主要是多线程,在多线程的作业中,我主要采取了生产者-消费者的设计模式,在这种模式下,我能够尽可能地避免由于多线程造成的数据安全问题,较为简单地保护共享对象的数据安全。 第一次作业 由于是第一次的作业,因此相当于后两次的作业来说,难度并不是很难。 -
面向对象设计与构造 第二单元总结
第二单元博客作业 第五次作业 UML类图: 架构思路: 本次作业只有固定的五台纵向电梯,处理的请求之间相互独立,故处理起来较为简单。线程的设计整体基于生产者消费者模式,输入通过一个线程暂存到buffer请求队列中,五台电梯各开一个线程(在主线程中就可以设置好),模拟电梯的自主运行,同时分别维护自己的