③LampManage类的编写
该类为一个交通灯的总控制,为了达到方便 ,我们创建只有一个线程的线程池,该线程池用来控制红绿灯的交换时间,我这里初始灯是由S2N,在覆盖了接口Runnable的run方法中,要获得Lamp类中close方法返回的下一个绿灯的对象。由此就可以不断循环控制整个交通灯,
这里设置了每隔10s绿灯就切换到下一条线路上。
package cn.itcast.Traffic;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class LampManage {
//该类用来管理整个交通灯的运作
//也就是搞一个定时器,让交通灯可以互相切换
Lamp lamp ;
public LampManage(){
//先指定以那条路上的灯开始
lamp = Lamp.S2N;
ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);//设置一个定时器,也就是开启一个线程
timer.scheduleAtFixedRate(
new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(lamp+"方向的灯亮了。。。。。。。。。");
System.out.println("相对应的有6个方向可以通车了 分别是 :S2E,E2N,N2W,W2S,"+lamp.correlight+","+lamp);
lamp = lamp.close();//开启10s后执行该段代码,也就是关闭当前的交通灯开启下一个交通灯
}
},
10,
10,
TimeUnit.SECONDS);
}
}
④MainManage类的编写
该类的编写很简单,就是构造12条线路,调用交通灯的总控制类,使得可以在每条线路随机增加汽车且调动了红绿灯来控制车辆之间的来往
package cn.itcast.Traffic;
public class MainManage {
//产生十二个红绿灯
public static void main(String[] args) {
String lamp[]={"S2N","S2W","E2W","E2S","N2S","N2E","W2E","W2N","S2E","E2N","N2W","W2S"};
for(int i=0;i
到此交通灯模拟就算是结束,,,看似简单,却是用到了很多的基础知识,尤其是面向对象的基础。想要学得更好,基础是必不可少的。