下面分享的是一个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