-
BUAA面向对象课程博客 第2弹:简单电梯调度系统
#1 概述 本单元我基于Java完成了一套多线程电梯运行与调度模拟系统。本文中我将按本单元3次作业的迭代顺序,总结我的设计思路与关键实现细节。通过本文,你可以了解到: 简单的Java多线程设计模式 多线程程序的增量开发方法 #2 作业回顾 ##2.1 第一次作业 本单元实现了北航新主楼A-E座共享输 -
OO第二单元总结
一、同步块的设置 在第二单元的作业中,我只使用了同步块的设置,没有使用读写锁,因此仅就同步块这一方面来介绍我三次作业的设计。从第一次作业初上手多线程,对于synchronized懵懵懂懂、看wait/notify晕头转向,到第三次作业已经摸清了这些关键字、内置方法的机理,能够肉眼分析出轮询的bug, -
OO-2022-Unit2-BeihangCSE
OO第二单元 一、同步锁的设置和锁的选择 本单元中同步锁我主要选择了sychronized关键字 + wait() notifyAll的方式设置同步块 在程序中,RequestQueue是最主要的共享数据 public class RequestQueue { private ArrayList<P -
20373222李世昱第二单元总结
第二单元博客总结 第五次作业UML类图和时序图如下: 由于第五次作业整体比较简单,该次作业并无过多迭代性考虑,采用的是标准的生产者消费者模式,INPUT线程不断读入新的数据发送给调度器,调度器把符合对应楼座的请求发送给对应的电梯,剩下的交给电梯自己不断处理。 同步性控制:第五次作业共享数据比较少,所 -
BUAA OO 2022 第二单元
↓ gitPage 博客链接: https://mmmusel.github.io/2022/05/01/OO-Unit2-summary/ 一、电梯的调度策略 1.1 状态转移图 1.2 纵向电梯的LOOK算法 LOOK算法实现 与真实的电梯大致相同的策略,即维护电梯当前运行方向dir,更远层无请 -
OO 第二单元博客作业
OO 第二单元博客作业 第一次作业 题目简述 用多线程实现一个目的选择电梯系统。其中共有五部独立的纵向电梯,请求的出发点和目标点必定位于同一楼座 UML图 架构分析:由于本次作业请求类型单一,且电梯数目确定,未使用调度器处理请求 MainClass:负责电梯的创建和输入线程的启动 InputThre -
BUAA-OO-UNIT2-Elevator
第一次作业: 同步块设置与锁的选择: 第一次作业相对比较简单,需要实现一个纵向的电梯调度问题。 我将电梯和输入请求都当作线程进行处理,将请求队列作为中间的交互通道,将请求队列中的增加请求、得到请求等操作加锁。这样就可以实现线程安全的交互。 调度器设置: 第一次作业由于只有直上直下的请求,所以调度相对 -
北航2022OO第二单元博客作业
概述 本单元电梯作业,主要加深我们对多线程编程的认知,使我们掌握一些多线程编程的技巧。采用的电梯形式确实很好地展现了多线程常见的错误,充分锻炼了我们多线程设计的能力。 个人架构设计分析 第五次作业 UML类图 顺序图 分析 我的设计是,电梯自行检查等待队列,自行决定如何运行(开关门、上下行等)。而在 -
BUAA-oo-第二单元总结
一、整体思路总结 要求分析 本单元的三次作业从简单到复杂,最终实现了一个具有横向和纵向两种电梯,具有换乘功能和动态增加电梯的电梯调度设计。 在第一次作业中,只有简单的纵向电梯,并且不支持动态增加电梯,最需要注意的是搭建好一个架构,并且注意线程安全问题。 第二次作业中,增加了横向电梯,支持 -
2022北航面向对象第二次作业分享及总结
本次作业由三次子任务组成,从3月28号开始,迭代开发,实现了一个多线程实时电梯系统。本次项目是笔者第一次接触多线程开发,在迭代过程中逐步熟悉了多线程的设计方法。本文将会主要从架构设计、线程安全以及策略问题三方面进行分析总结。