Java多线程编程小实例模拟停车场系统
发布时间:2020-05-23 13:43:55 所属栏目:Java 来源:互联网
导读:下面分享的是一个Java多线程模拟停车场系统的小实例(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多线程编程小实例模拟停车场系统的全部内容,希望对大家有所帮助。如果您想了解更多有关Java多线程编程的实例,这里有几篇文章还是不错的: Java多线程编程实现socket通信示例代码 浅谈Java多线程处理中Future的妙用(附源码) Java通过卖票理解多线程 更多精彩内容尽在:编程小技巧! 在代码的世界里,你就是上帝! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- java – 从本机函数(c,jni)返回一个int会导致应用
- JComponent.paintImmediately()如何在Java Swing
- java – 通过html更改编辑文本的文本
- java通过Throwable的printStackTrace方法将异常信
- orm – Laravel中的许多关系:belongsToMany()vs
- java – JPA最佳实践:静态查找实体
- java – 创建会话和cookie之间的区别?
- java – 在不使用预准备语句的情况下在JDBC中阻止
- java 下执行mysql 批量插入的几种方法及用时
- readFully没有使用Java Nashorn Javascript Engi
热点阅读
