Java多線程編程小實例模擬停車場系統(tǒng)
下面分享的是一個Java多線程模擬停車場系統(tǒng)的小實例(Java的應(yīng)用還是很廣泛的,哈哈),具體代碼如下:
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();
}
}
運行結(jié)果如下:
車 111111成功停在1號停車位上 車 111111成功停在2號停車位上 車 222222成功停在3號停車位上 車 222222已離開停車場 車 222222成功停在3號停車位上 車 222222已離開停車場 車 222222成功停在3號停車位上 車 222222已離開停車場 車 555555成功停在3號停車位上 車 555555已離開停車場 車 555555成功停在3號停車位上 停車場車位已滿,車 444444停車失敗 ····
總結(jié)
以上就是本文關(guān)于Java多線程編程小實例模擬停車場系統(tǒng)的全部內(nèi)容,希望對大家有所幫助。如果您想了解更多有關(guān)Java多線程編程的實例,這里有幾篇文章還是不錯的:
更多精彩內(nèi)容盡在:腳本之家!
在代碼的世界里,你就是上帝!
相關(guān)文章
Java synchronized重量級鎖實現(xiàn)過程淺析
這篇文章主要介紹了Java synchronized重量級鎖實現(xiàn)過程,synchronized是Java里的一個關(guān)鍵字,起到的一個效果是"監(jiān)視器鎖",它的功能就是保證操作的原子性,同時禁止指令重排序和保證內(nèi)存的可見性2023-02-02
基于Eclipse 的JSP/Servlet的開發(fā)環(huán)境的搭建(圖文)
本文將會詳細地展示如何搭建JSP的開發(fā)環(huán)境。本次教程使用的是最新版的Eclipse 2018-09編輯器和最新版的Apache Tomcat v9.0,步驟詳細,內(nèi)容詳盡,適合零基礎(chǔ)學者作為學習參考2018-12-12
Java8新特性之再見Permgen_動力節(jié)點Java學院整理
這篇文章主要介紹了Java8新特性之再見Permgen的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧2017-06-06
詳解如何讓Spring MVC顯示自定義的404 Not Found頁面
這篇文章主要介紹了詳解如何讓Spring MVC顯示自定義的404 Not Found頁面,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
JavaWeb中轉(zhuǎn)發(fā)與重定向的區(qū)別小結(jié)
轉(zhuǎn)發(fā)和重定向是JavaWeb中常用的兩種頁面跳轉(zhuǎn)方式,它們在實現(xiàn)上有一些區(qū)別,本文主要介紹了JavaWeb中轉(zhuǎn)發(fā)與重定向的區(qū)別小結(jié),具有一定的參考價值,感興趣的可以了解一下2023-10-10

