请使用的Java的多线程知识来编写一个程序,实现一个简单的摩天大楼的电梯模型

请使用的Java的多线程知识来编写一个程序,实现一个简单的摩天大楼的电梯模型
程序是以一座摩天大楼的多个电梯为背景,用线程、流程控制、随机函数等知识来模拟它。
2、 电梯的描述:
电梯是日常生活中经常要遇到的一种载客工具,在载客任务结束之后,他是停止在当前的楼层的。如果有乘客在某一个楼层点击了请求按钮,电梯开始运作,或者是向上或者是向下到达响应的楼层停止,然后打开门,等乘客进入电梯之后关上门,在得知乘客前往楼层的目的地之后再继续运作,直到完成乘客的请求之后,电梯重新进入到停止状态等待新请求的到来。
电梯决定是向上运动还是向下运动这一判断过程很复杂,并不是随便哪一楼层有请求就马上去响应的,这样有可能电梯就只在某两个楼层里来回运动而无法完成其它楼层乘客的请求。一个电梯在运作的时候,他最少有两个消息存储器来存储不同的消息,一个消息就对电梯的楼层请求,这表示某一楼层有乘客需要用这台电梯,一个电梯可能同时会收到很多个楼层的使用电梯请求,电梯一般的原则是响应最接近自己当前楼层的请求,但是这也需要和电梯实际运动的方向以及该楼层的请求是向上还是向下相联系的,其他楼层是否同时也有请求响应也是对电梯的运动方向起着重要的作用。另一种电梯存储的消息就是电梯当前的任务消息,在乘客进入到电梯之后,乘客指示电梯需要到达的目的地,当没有外面楼层请求消息的时候,电梯一般是先将当前方向上的任务完成,当有外面楼层请求消息的时候,电梯还要依据请求消息的具体内容来判断电梯是不是需要停下来,来接待发出请求消息的乘客。
3、 电梯运动方向的判断准则:
判断电梯向上还是向下的操作会相当的麻烦,这是有一定的电梯算法的,这个电梯算法可以处理一个电梯的方向判断也可以处理多个建立关联的电梯对请求响应的判断。在这里电梯具体实现的算法并不是要谈到主要内容,所以只需了解电梯一般的判断准则就可以了,这个准则总结起来有以下各个点:
(1) 电梯在停止的时候,如果请求消息队列和任务队列都为空,电梯相应地一个发出请求的楼层,依据楼层和电梯当前楼层的高度来决定电梯的初始运动方向。
(2) 电梯在向某一个方向运动的时候,如果任务列表中有电梯到达的楼层,则电梯需要停止等待乘客出电梯并且迎接可能有的新乘客;如果电梯的任务列表中没有当前到达的楼层,但是受到了该楼层的电梯运动方向一致的运动方向请求的时候,电梯停止等待乘客的进入,如果请求的方向和电梯运动的方向不一致,电梯将不加理会。
(3) 在完成某一个运动方向的任务之前,电梯将不理会反运动方向的楼层请求,只是将这个请求保存起来等带电梯反方向的运动来处理他们,当楼层的任务结束之后,电梯完成了一个方向的运动而将做反方向运动。依据接收道的同方向的请求,电梯到达指定的楼层完成载客的操作。
(4) 当电梯的任务列表和请求列表都为空的时候,电梯重新回到了停止状态,等待新的请求的到来。
yyhjy007 1年前 已收到1个回答 举报

大海啊它特别蓝 幼苗

共回答了16个问题采纳率:75% 举报

private Integer skuid;
private Breed breed;
private Variety variety;
private String skuname;

1年前

8
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.013 s. - webmaster@yulucn.com