一
1、清楚十字路口的行驶线路
每个十字路口都有12条行驶路线,直线方向有4条,右转弯4条,左转弯4条而右转弯是没有限制的,所以真正的只有8条线路是需要规定红绿灯的,可以把剩下的8条线路编成4组来依次通行相向直线行驶的划分为1组,这里有2组4条线路南北左转线路和东西左转线路可以各划分为单独的一组,这样4组线路非常安全,不会发生线路冲突,共放行四次循环一次,因此可将八条线路分为四组,每次通过一组,轮流通过。
2、定义Road类的时候,需要考虑的问题
为了更真实的模拟现实生活中的十字路口,在这个类中定义了一个成员变量,List集合,不停的移除0位置上的汽车
定义公路的构造方法
公路的构造方法接收一个字符串参数,这个参数用于表明是哪条行驶线路,
当公路一创建的时候,公路上就随机的来车,所以这里用到了多线程技术。
第一个单独线程用于模拟公路上来车
这个多线程里面循环1000次,用于模拟来了1000辆车,而每次来一辆车,就sleep一下,而且sleep的时间最好也定义成随机时间
第二个单独线程用于模拟汽车通过路口,汽车通过路口需要2个条件,一个是当前必须有等待的车,另一个条件是路灯必须是绿灯
虽然这2个线程是在一个构造方法里面,但因为是单独的线程,所以不会出现构造方法按顺序执行的问题
3、定义车辆行驶线路上的灯
因为行驶线路只有12条,所以这里定义成枚举类,用每个方向的第一个字母的代表线路,比如S2N,2就是to的意思,south to north 南向北
与S2N相对应的是N2S,这2