本次做業開始引入多線程編程。算法
第一次做業是實現單部單請求電梯,我採用的策略是經過輸入把請求保存在調度器的隊列中,調度器會向電梯發出指令以驅使其運行。編程
第二次做業是實現單部多請求電梯,我採用的策略是輸入以後,調度器對輸入請求進行處理,而後保存在電梯的不一樣隊列中(向下運行隊列、向上運行隊列),電梯按照運行隊列的順序運行。從整體上來講,電梯的運行模式是上下行交替。設計模式
第三次做業是實現多部多請求電梯,我採用的策略與第二次相似,不一樣點是調度器會按必定的算法把請求保存在不一樣電梯的隊列裏。安全
對於線程終止的說明是,輸入終止會記錄標記,電梯隊列爲空並擁有終止標記時中止運行。多線程
本身出現的BUG內容主要是如何向隊列分配請求的算法上,還有就是電梯完成當前隊列的判斷條件上。併發
因爲本次做業與第一次做業最大的不一樣在於多線程的使用,因此在尋找BUG的時候我會更多地測試併發性,請求同時出現如何處理?可否實現捎帶?當電梯中止運行,更新下一個目的地的時候出現了新請求該如何處理?諸如此類的問題......測試
在本次做業中我運用到了單例模式、工廠模式、生產消費模式等成熟的設計模式,同時也注意遵循單一責任原則、開閉原則等設計原則。使用成熟的模型,並遵循良好的規範可使個人程序在運行時更加穩定,程序的運行邏輯更符合我對它的指望,不會出現一些奇奇怪怪的BUG,難以定位。就算是出現了BUG,也多半是本身設計上的失誤,可以較快更正。線程
要寫好本次多線程做業,我以爲務必要把鎖與同步的細節弄清楚。notify和wait如何配合使用?鎖對象和鎖方法究竟有什麼區別?弄清楚這些以後,才能確保線程運行的邏輯在咱們的控制之下。設計