A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 思维 高级黑马   /  2014-8-16 16:21  /  1225 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 思维 于 2014-8-17 09:08 编辑

今天学交通灯管理系统,看到张孝祥老师的PPT里面有这么一句话:在Road对象的构造方法中启动一个定时器,每隔一秒检查该方向上的灯是否为绿,是则打印车辆集合和将集合中的第一辆车移除掉。
问题是:难道当前灯不是绿灯,已经进入集合的车辆就不用移除吗?实际情况是不是当前灯变为红灯时,已经进入该路线的车辆必须停下原地待命,等下次绿灯啊?
  1. ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);
  2.                 //创建一个固定频率的定时器,
  3.                 timer.scheduleAtFixedRate(
  4.                         //执行路线中车辆通过的线程
  5.                         new Runnable(){
  6.                                 public void run(){
  7.                                         //假设路中存在车辆
  8.                                         if(vechicles.size()>0){
  9.                                                 //返回当前路线灯的状态
  10.                                                 boolean lighted = Lamp.valueOf(Road.this.name).isLighted();
  11.                                                 //假设道路上为绿灯,remove(0)表示移除首先进入该集合的车辆
  12.                                                 if(lighted){
  13.                                                         System.out.println(vechicles.remove(0)+"is traversing!");
  14.                                                 }
  15.                                         }
  16.                                 }
  17.                         },
  18.                         //初始化延时,1秒以后执行该线程
  19.                         1,
  20.                         //两次开始执行的最小间隔时间为1秒
  21.                         1,
  22.                         //计时单位:秒
  23.                         TimeUnit.SECONDS                        
  24.                 );               
复制代码

6 个回复

正序浏览
思维 发表于 2014-8-17 09:08
主要是还木有碰过车

你不会理解为行人看见的红绿灯吧。
回复 使用道具 举报
主要是还木有碰过车:D
回复 使用道具 举报
红灯吗。当然是要停车等绿灯啊
回复 使用道具 举报
肯定啊 ……你开车不看红绿灯?
回复 使用道具 举报
好吧!看来我还不太懂交通法规!
回复 使用道具 举报
肯定的啊,前面是红灯还不停下来,那是闯红灯啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马