黑马程序员 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秒之间,很贴近实际。作为初学者我从中也受到了很多启发,以后碰到类似的问

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

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

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

你可能感兴趣的:(黑马程序员 java学习笔记(day09))