class Car { public static Vector<Integer> gaps = new Vector<Integer>();
private int num;
private String name;
private STATUS status = STATUS.RUN;
private RoadStatus roadStatus = RoadStatus.OK; private int currentGap = -100; public int getCurrentGap() {
return currentGap;
} public void setCurrentGap(int currentGap) {
this.currentGap = currentGap;
} public int getNum() {
return num;
} public static void setGaps(Vector<Integer> gaps) {
gaps.addAll(gaps);
} public STATUS getStatus() {
return status;
} public void setStatus(STATUS status) {
this.status = status;
switch (status) {
case RUN:
System.out.println("Car" + num + "开始通行..");
break;
case STOP:
System.out.println("Car" + num + "开始停下等待..");
break;
case RERUN:
System.out.println("Car" + num + "恢复运行");
break;
case REPAIRED:
System.out.println("Car" + num + "缺口" + currentGap + "修理完成");
break;
default:
break;
} } public RoadStatus getRoadStatus() {
return roadStatus;
} public synchronized RoadStatus getRoadStatusByRandom() {
Random random = new Random();
int i = random.nextInt(2);
if (i == 0) {
return RoadStatus.OK;
} else {
{
int g = getGap();
if (g == -1000) {
// 已经没有了缺口
return RoadStatus.OK;
}
System.out.println("Car" + num + "碰到了缺口" + g);
gaps.remove(new Integer(g));
this.setCurrentGap(g);
return RoadStatus.BROKEN;
}
}
// return i==0 ? RoadStatus.OK:RoadStatus.BROKEN;
} public synchronized int getGap() {
synchronized (gaps) {
if (gaps.size() == 0) {
return -1000;
}
int g = gaps.get(new Random().nextInt(gaps.size()));
gaps.remove(new Integer(g));
return g;
}
} public void setRoadStatus(RoadStatus roadStatus) {
this.roadStatus = roadStatus;
} public Car() {
} public Car(int num) {
this.num = num;
} public Car(int num, String name) {
this.num = num;
this.name = name;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}enum STATUS {
RUN, STOP, REPAIRED, RERUN
}enum RoadStatus {
OK, BROKEN
}