软件编程
位置:首页>> 软件编程>> java编程>> Java多线程编程小实例模拟停车场系统

Java多线程编程小实例模拟停车场系统

作者:diaotai  发布时间:2022-07-07 06:36:29 

标签:java,多线程

下面分享的是一个Java多线程模拟停车场系统的小实例(Java的应用还是很广泛的,哈哈),具体代码如下:

Park类


public class Park {
boolean []park=new boolean[3];
 public boolean equals()
 {
   return true;
 }
}

Car:


public class Car {
private String number;
 private int position=0;
 public Car(String number)
 {
   this.number=number;
 }
 public void setNumber(String number)
 {
   this.number=number;
 }
 public String getNumber()
 {
   return number;
 }
 public void setPosition(int i)
 {
   position=i;
 }
 public int getPosition()
 {
   return position;
 }
 public int hashCode()
 {
   return number.hashCode();
 }
 public boolean equals(Object obj)
 {
   if(obj==this)
     return true;
   if(obj!=null&&obj.getClass()==Car.class)
   {
     Car c=(Car)obj;
       return c.number==this.number;
   }
   return false;
 }
}

 ParkCar:


public class ParkCar implements Runnable
{
 Car c;
 Park p;
 public ParkCar(Car c,Park p)
 {
   this.c=c;
   this.p=p;
 }
 @Override
 public void run()
 {
   while(true)
   {
     int i=0;
     synchronized(p)
     {
       if(c.getPosition()==0)
       {
     for(i=0;i<p.park.length;i++)
     {
       if(p.park[i])
       {
         continue;
       }
       else
       {
         System.out.println("车 "+c.getNumber()+"成功停在"+(i+1)+"号停车位上");
         p.park[i]=true;
         c.setPosition(i);
         break;
       }
     }
     if(i==3)
       System.out.println("停车场车位已满,车 "+c.getNumber()+"停车失败");
     }

try
     {
       Thread.sleep(100);
     }
     catch(InterruptedException ie)
     {
       ie.printStackTrace();
     }
     }

synchronized(p)
     {
       if(c.getPosition()!=0)
       {
         p.park[c.getPosition()]=false;
         c.setPosition(0);
         System.out.println("车 "+c.getNumber()+"已离开停车场");

}
       try
       {
         Thread.sleep(100);
       }
       catch(InterruptedException ie)
       {
         ie.printStackTrace();
       }
     }

}
 }
 }

Test2:


public class Test2 {
public static void main(String []args)
 {
   Park p=new Park();
   Car a=new Car("111111");
   Car b=new Car("222222");
   Car c=new Car("333333");
   Car d=new Car("444444");
   Car e=new Car("555555");
   new Thread (new ParkCar(a,p)).start();
   new Thread (new ParkCar(c,p)).start();
   new Thread (new ParkCar(d,p)).start();
   new Thread (new ParkCar(e,p)).start();
   new Thread (new ParkCar(b,p)).start();

}
}

运行结果如下:


车 111111成功停在1号停车位上
车 111111成功停在2号停车位上
车 222222成功停在3号停车位上
车 222222已离开停车场
车 222222成功停在3号停车位上
车 222222已离开停车场
车 222222成功停在3号停车位上
车 222222已离开停车场
车 555555成功停在3号停车位上
车 555555已离开停车场
车 555555成功停在3号停车位上
停车场车位已满,车 444444停车失败
····

总结

Java多线程编程实现socket通信示例代码

浅谈Java多线程处理中Future的妙用(附源码)

Java通过卖票理解多线程

更多精彩内容尽在:脚本之家!

在代码的世界里,你就是上帝!

来源:http://blog.csdn.net/diaotai/article/details/52790942

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com