下面分享的是一个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通过卖票理解多线程
更多精彩内容尽在:社区!
在代码的世界里,你就是上帝! |