1、項目要求概述html
1.1 項目目的java
經過控制電梯調度,實現操做系統調度過程算法
學習特定環境下多線程編程的方法編程
學習調度算法多線程
1.2 開發環境學習
語言:javaui
系統平臺:全平臺(具有java環境)操作系統
IDE:Intellij IDEA命令行
產品呈現模式:jar包線程
執行環境要求:安裝java
Win:安裝java配置環境變量後雙擊
Linux/Mac:命令行:
java –jar 電梯.jar
1.3 基本需求
模擬20層樓中5架電梯的調度
電梯具備最基本的按鍵
可顯示電梯的當前狀態
2、調度算法概述
2.1 乘客行爲概述
乘客能夠在20層樓的任何一層樓按當前樓層的上或者下的按鍵對電梯提出需求
乘客能夠按動電梯中的樓層選擇按鈕來對指定電梯前去哪裏,因爲ui的設計問題,這一功能被要求在按動請求按鈕時一併完成
乘客能夠在電梯中按動緊急按鈕迫使當前電梯中止運做
2.2 電梯行爲概述
電梯初始狀態均爲靜止,且停泊在第一層
電梯經過反覆自檢自身的狀態變量來變動本身的行爲
行進中的電梯每到一個樓層都自檢下客隊列,判斷當前樓層是否須要開門下客
行進中的電梯每到一個樓層都要檢查當前樓層乘客等待隊列是否有符合當前方向的乘客,判斷當前樓層是否要載客,若是在該樓層電梯中沒有了乘客且沒有應答其餘請求,則載上當前樓層人數較多方向的乘客繼續行進
2.3 調度
乘客按下請求按鈕響應流程
上下方向上有朝這一樓行進且該電梯的最高/低請求大於該樓層:
將會等待該電梯到達該樓層來載上該乘客
上下方向上沒有朝這一樓行進的電梯或是有可是該電梯最高/低請求並沒能到達該樓層:
將會進行檢索靜止的電梯隊列:
靜止電梯的選擇將位置優先,選擇離該樓層最近的靜止電梯來響應請求,將該電梯啓動,並將在該樓停下的指令塞入該電梯。
參考文檔和完整的文檔和源碼下載地址: