package 电梯03;
/* 单线程电梯(1台电梯运行,10层)模拟:
* Stack 表示电梯所能装载的人数
* 下面两个链表表示每层楼对应的人 0未启用
* LinkList[] up = new LinkList[11]; want=1 向上去的人所在队列
LinkList[] down = new LinkList[11]; want=-1 向下去的人所在队列
Cus 乘客:
at:所在层数
to:目的层数
want:1表示向上去,-1表示向下去
key:乘客编号
*/
public class Test {
public static void main(String[] args){
LinkList[] up = new LinkList[11];
LinkList[] down = new LinkList[11];
for(int k=0;k<11;k++){//对每个链表进行初始化
up[k]=new LinkList();
down[k]=new LinkList();
}
Stack st = new Stack();
Work wokk = new Work(st,up,down,0);
Thread t1 = new Thread(wokk);
t1.start();
Cus[] cus=new Cus[20];
for(int i=0;i<20;i++){
while(true){
int a=(int)(Math.random()*10+1);
int t=(int)(Math.random()*10+1);
if(a<t&&t!=0&&a!=0){
cus[i] = new Cus(a,t,i,1);
up[a].add(cus[i]);
break;
}else if(a>t&&t!=0&&a!=0){
cus[i] = new Cus(a,t,i,-1);
down[a].add(cus[i]);
break;
}
}
wokk.sleep();
}
}
}
class Work implements Runnable{
int work;
int stay;
Stack dt;
boolean asd=true;
LinkList[] up;
LinkList[] down;
public Work(Stack s,LinkList[] u,LinkList[] d, int w){
dt=s;
up=u;
down=d;
work=w;
stay=1;
}
public void run(){
while(true){
if(work==0){//无人状态
if(asd==false){
Sys
java 多线程 模拟一台电梯的工作状态
最新推荐文章于 2022-03-09 14:03:10 发布
这篇博客通过Java实现了一个单线程模拟电梯的工作状态,利用Stack和链表管理电梯及各楼层的乘客。创建Work类作为线程任务,根据电梯上行和下行的状态进行乘客的进出操作。通过随机生成乘客的目标楼层,模拟了电梯的运行过程。
摘要由CSDN通过智能技术生成