Java多線程編程小實(shí)例模擬停車場(chǎng)系統(tǒng)
下面分享的是一個(gè)Java多線程模擬停車場(chǎng)系統(tǒng)的小實(shí)例(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)+"號(hào)停車位上"); p.park[i]=true; c.setPosition(i); break; } } if(i==3) System.out.println("停車場(chǎng)車位已滿,車 "+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()+"已離開停車場(chǎng)"); } 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(); } }
運(yùn)行結(jié)果如下:
車 111111成功停在1號(hào)停車位上 車 111111成功停在2號(hào)停車位上 車 222222成功停在3號(hào)停車位上 車 222222已離開停車場(chǎng) 車 222222成功停在3號(hào)停車位上 車 222222已離開停車場(chǎng) 車 222222成功停在3號(hào)停車位上 車 222222已離開停車場(chǎng) 車 555555成功停在3號(hào)停車位上 車 555555已離開停車場(chǎng) 車 555555成功停在3號(hào)停車位上 停車場(chǎng)車位已滿,車 444444停車失敗 ····
總結(jié)
以上就是本文關(guān)于Java多線程編程小實(shí)例模擬停車場(chǎng)系統(tǒng)的全部?jī)?nèi)容,希望對(duì)大家有所幫助。如果您想了解更多有關(guān)Java多線程編程的實(shí)例,這里有幾篇文章還是不錯(cuò)的:
Java多線程編程實(shí)現(xiàn)socket通信示例代碼
更多精彩內(nèi)容盡在:腳本之家!
在代碼的世界里,你就是上帝!
相關(guān)文章
Java中的static靜態(tài)變量、靜態(tài)方法超詳細(xì)講解
Java中的static關(guān)鍵字用于表示靜態(tài)變量和靜態(tài)方法,靜態(tài)變量是類的成員變量,它們屬于類本身,而不是類的實(shí)例,這篇文章主要給大家介紹了關(guān)于Java中static靜態(tài)變量、靜態(tài)方法詳細(xì)講解的相關(guān)資料,需要的朋友可以參考下2024-06-06SpringBoot異步實(shí)現(xiàn) 的8種方式
在同步操作中,執(zhí)行到?發(fā)送短信?的時(shí)候,我們必須等待這個(gè)方法徹底執(zhí)行完才能執(zhí)行?贈(zèng)送積分?這個(gè)操作,如果?贈(zèng)送積分?這個(gè)動(dòng)作執(zhí)行時(shí)間較長(zhǎng),發(fā)送短信需要等待,這就是典型的同步場(chǎng)景,這篇文章主要介紹了SpringBoot異步實(shí)現(xiàn) 的8種方式,需要的朋友可以參考下2023-11-11Spring Boot之內(nèi)嵌tomcat版本升級(jí)操作示例
這篇文章主要為大家介紹了Spring Boot之內(nèi)嵌tomcat版本升級(jí)操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

java項(xiàng)目中讀取jdbc.properties文件操作

Netty分布式ByteBuf使用directArena分配緩沖區(qū)過程解析

java 實(shí)現(xiàn)判斷回文數(shù)字的實(shí)例代碼

JAVA后臺(tái)轉(zhuǎn)換成樹結(jié)構(gòu)數(shù)據(jù)返回給前端的實(shí)現(xiàn)方法

SpringBoot中調(diào)用通用URL的實(shí)現(xiàn)