下面分享的是一個Java多線程模擬停車場系統的小實例(Java的應用還是很廣泛的,哈哈),具體代碼如下:
Park類
1
2
3
4
5
6
7
|
public class Park { boolean []park= new boolean [ 3 ]; public boolean equals() { return true ; } } |
Car:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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(); } } |
運行結果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
車 111111成功停在1號停車位上 車 111111成功停在2號停車位上 車 222222成功停在3號停車位上 車 222222已離開停車場 車 222222成功停在3號停車位上 車 222222已離開停車場 車 222222成功停在3號停車位上 車 222222已離開停車場 車 555555成功停在3號停車位上 車 555555已離開停車場 車 555555成功停在3號停車位上 停車場車位已滿,車 444444停車失敗 ···· |
總結
以上就是本文關于Java多線程編程小實例模擬停車場系統的全部內容,希望對大家有所幫助。如果您想了解更多有關Java多線程編程的實例,請參看本站java編程欄目。
原文鏈接:http://blog.csdn.net/diaotai/article/details/52790942