1、项目要求概述html
1.1 项目目的java
经过控制电梯调度,实现操做系统调度过程算法
学习特定环境下多线程编程的方法编程
学习调度算法多线程
1.2 开发环境学习
语言:javaui
系统平台:全平台(具有java环境)操作系统
IDE:Intellij IDEA命令行
产品呈现模式:jar包线程
执行环境要求:安装java
Win:安装java配置环境变量后双击
Linux/Mac:命令行:
java –jar 电梯.jar
模拟20层楼中5架电梯的调度
电梯具备最基本的按键
可显示电梯的当前状态
乘客能够在20层楼的任何一层楼按当前楼层的上或者下的按键对电梯提出需求
乘客能够按动电梯中的楼层选择按钮来对指定电梯前去哪里,因为ui的设计问题,这一功能被要求在按动请求按钮时一并完成
乘客能够在电梯中按动紧急按钮迫使当前电梯中止运做
电梯初始状态均为静止,且停泊在第一层
电梯经过反复自检自身的状态变量来变动本身的行为
行进中的电梯每到一个楼层都自检下客队列,判断当前楼层是否须要开门下客
行进中的电梯每到一个楼层都要检查当前楼层乘客等待队列是否有符合当前方向的乘客,判断当前楼层是否要载客,若是在该楼层电梯中没有了乘客且没有应答其余请求,则载上当前楼层人数较多方向的乘客继续行进
乘客按下请求按钮响应流程
上下方向上有朝这一楼行进且该电梯的最高/低请求大于该楼层:
将会等待该电梯到达该楼层来载上该乘客
上下方向上没有朝这一楼行进的电梯或是有可是该电梯最高/低请求并没能到达该楼层:
将会进行检索静止的电梯队列:
静止电梯的选择将位置优先,选择离该楼层最近的静止电梯来响应请求,将该电梯启动,并将在该楼停下的指令塞入该电梯。