java 多线程 模拟一台电梯的工作状态

这篇博客通过Java实现了一个单线程模拟电梯的工作状态,利用Stack和链表管理电梯及各楼层的乘客。创建Work类作为线程任务,根据电梯上行和下行的状态进行乘客的进出操作。通过随机生成乘客的目标楼层,模拟了电梯的运行过程。
摘要由CSDN通过智能技术生成
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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值