黑马程序员 java学习笔记(day09)

 ------- android培训java培训、期待与您交流! ----------

 

   今天学习了交通灯管理系统的视频教程,了解了交通灯的一些基本原理。想要做出交通灯管理系统的

工程,就必须对交通灯有一定的了解。首先对应道路的灯是同时变化的,比如东向南的,西向北的,而且所

有右转一直是绿灯。这些都是我们之前必须做的准备工作。
    使用面向对象的思想思考,每条路线上都会出现多辆车,路线上会随机增加新的车,在灯绿期间还要

每秒钟减少一辆车。所以设计一个Road类来表示路线,每个Road对象代表一条路线,总共有12条路线,即

系统中总共要产生12个Road实例对象。每条路线上随机增加新的车辆,增加到一个集合中保存。每条路线

每隔一秒都会检查控制本路线的灯是否为绿,如果是则将本路线保存车的集合中的第一辆车移除,即表示

车穿过了路口。
    每条路线每隔一秒都会检查控制本路线的灯是否为绿,一个灯由绿变红时,应该将下一个方向的灯变

绿。所以设计一个Lamp类来表示一个交通灯,每个交通灯要有变绿和变红的方法,并且能返回自己的绿红

状态。总共有12条路线,所以,系统中总共要产生12个交通灯。右拐弯的路线假设出有四个右拐弯的灯,

这些灯为常绿状态,即永远不会变红。除了右拐弯方向的其他8条路线的灯,它们是两两成对的,可以归为

4组,所以,在编程处理时,只要从这4组中各取出一个灯,对这4个灯依次轮询变绿,与这4个灯方向对应

的灯则随之一同变化,因此Lamp类中要有一个变量来记住自己相反方向的灯,在一个Lamp对象的变绿和变

红方法中,将对应方向的灯也变绿和变红。
    设计一个LampController类,它定时让当前的绿灯变红。

  
   
 ExecutorService pool = Executors.newSingleThreadExecutor();
 pool.execute(new Runnable(){
  public void run(){
   for(int i=1;i<1000;i++){
    try {
     Thread.sleep((new Random().nextInt(10) + 1) * 1000);
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
    vechicles.add(Road.this.name + "_" + i);
   }    
  }
   
 });
    这段代码也是今天我重点掌握的部分,很巧妙的运用了线程池和随机数模拟车辆不断随机上路的过程

,并且时间控制到了1到10秒之间,很贴近实际。作为初学者我从中也受到了很多启发,以后碰到类似的问

题可以借鉴张老师的这个方法。
    尽管交通灯管理系统的代码我还有一些地方没弄明白,但是今天确实收获很大,这里面大部分的代码

可以说我都学过,但是自己肯定写不出来,这也让我看到了差距,今后要更加努力的学习,特别是思想及

代码的灵活运用。相信我能坚持到最后!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值