首页 > 编程 > Java > 正文

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

2019-11-26 11:05:48
字体:
来源:转载
供稿:网友

下面分享的是一个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多线程编程小实例模拟停车场系统的全部内容,希望对大家有所帮助。如果您想了解更多有关Java多线程编程的实例,这里有几篇文章还是不错的:

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

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

Java通过卖票理解多线程

更多精彩内容尽在:武林网!

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表