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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 风悠悠 于 2013-10-19 21:26 编辑

现在开始看视频

  1. //主函数
  2. package cn.itcast.traffic;
  3. public class MyTraffic {
  4. public static void main(String[] args) throws Exception {
  5.           EastAndWest EW=new EastAndWest();
  6.           NorthAndSouth NS=new NorthAndSouth();
  7.           Dextroversion Dex=new Dextroversion();</P>
  8.           String[] directions={"S2N","S2W","E2W","E2S","N2S","N2E","W2E","W2N","S2E","E2N","N2W","W2S"} ;
  9.           Thread EW_thread=new Thread(EW);
  10.           Thread NS_thread=new Thread(NS);
  11.           NS_thread.start();
  12.           EW_thread.start();
  13.           for(String direction:directions){
  14.                     new Thread(new Road(direction,EW,NS,Dex)).start();
  15.            }
  16.            new Control(EW,NS).run();
  17.           }
复制代码

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

9 个回复

倒序浏览
本帖最后由 风悠悠 于 2013-10-19 21:17 编辑
  1. //随机生成12条方向的道路上出现的车辆
  2. package cn.itcast.traffic;
  3. import java.util.Random;
  4. public class Road implements Runnable{
  5.      private String direction;
  6.      private Random random=new Random();
  7.      private int time;
  8.      private int num=0;
  9.      private EastAndWest EW;
  10.      private NorthAndSouth NS;
  11.      private Dextroversion Dex;
  12.      private String NumOfCars;</P>
  13.      public Road(String direction,EastAndWest EW,NorthAndSouth NS,Dextroversion Dex) {
  14.           this.direction=direction;
  15.           this.EW=EW;
  16.           this.NS=NS;
  17.           this.Dex=Dex;
  18.           }
  19.           public void run() {
  20.                 while(true){
  21.                    time=random.nextInt(5000)+2000;
  22.                     try {
  23.                    Thread.sleep(time);
  24.                    num++;
  25.                    NumOfCars=direction+"_"+num;
  26.                    if(direction=="E2N"||direction=="N2W"||direction=="W2S"||direction=="S2E")
  27.                         Dex.getNumOfCars(NumOfCars);
  28.                     if(direction=="W2E"||direction=="E2W"||direction=="W2N"||direction=="E2S")
  29.                         EW.getNumOfCars(NumOfCars);
  30.                         NS.getNumOfCars(NumOfCars);
  31.                     }
  32.                     catch (InterruptedException e) {
  33.                          e.printStackTrace();
  34.                      }
  35.                }
  36.         }
  37. }
复制代码
回复 使用道具 举报
本帖最后由 风悠悠 于 2013-10-19 21:10 编辑
  1. public void run() throws Exception{
  2.          while(true){
  3.                  synchronized(EW){
  4.                          System.out.println("东——西直行绿灯亮,【直行】车辆---允许通行---");
  5.                                  EW.setSign(false,true);
  6.                                   EW.notify();
  7.                    }
  8.                    Thread.sleep(10000);
  9.                      System.out.println("东——西直行红灯亮,【直行】车辆  !!! 停止通行!!!");
  10.                      System.out.println("东——西左转绿灯亮,【左转】车辆---允许通行---");
  11.                      EW.setSign(false,false);
  12.                      Thread.sleep(5000);
  13.                       EW.setSign(true,true);
  14.                       System.out.println("东——西左转红灯亮,【左转】车辆---停止通行---");
  15.                            synchronized(NS){
  16.                                 System.out.println("南——北直行绿灯亮,【直行】车辆---允许通行---");
  17.                                  NS.setSign(false,true);
  18.                                  NS.notify();
  19.                               }
  20.                       Thread.sleep(10000);
  21.                        System.out.println("南——北直行红灯亮,【直行】车辆  !!! 停止通行!!!");
  22.                        System.out.println("南——北左转绿灯亮,【左转】车辆---允许通行---");
  23.                        NS.setSign(false,false);
  24.                        Thread.sleep(5000);
  25.                         NS.setSign(true,true);
  26.                         System.out.println("南——北左转红灯亮,【左转】车辆---停止通行---");
  27.                         }
  28.             }
  29. }
复制代码
回复 使用道具 举报
本帖最后由 风悠悠 于 2013-10-19 21:21 编辑

  1. //南北向红绿灯代码
  2. package cn.itcast.traffic;
  3. import java.util.LinkedList;
  4. public class NorthAndSouth implements Runnable{
  5.      private LinkedList<String> Straight=new LinkedList<String>();
  6.      private LinkedList<String> TurnLeft=new LinkedList<String>();
  7.      private boolean sign=true;
  8.       private boolean sign_direction;
  9.       public void run() {
  10.             while(true){
  11.                   if(sign){
  12.                        synchronized(this){
  13.                            try {
  14.                               wait();
  15.                            }
  16.                              catch (InterruptedException e) {
  17.                                  e.printStackTrace();
  18.                             }
  19.                        }
  20.                    }
  21.                    if(Straight.size()!=0&&sign_direction&&!sign){
  22.                         System.out.println(Straight.removeFirst()+"直行 is traversing!");
  23.                     }

  24.                   if(TurnLeft.size()!=0&&!sign_direction&&!sign){
  25.                           System.out.println(TurnLeft.removeFirst()+"左转 is traversing!");
  26.                    }
  27.                    try {
  28.                            Thread.sleep(1000);
  29.                    }
  30.                     catch (InterruptedException e) {
  31.                            e.printStackTrace();
  32.                      }
  33.          }


  34.        public void getNumOfCars(String NumOfCars) {
  35.              if(NumOfCars.contains("S2N")||NumOfCars.contains("N2S"))
  36.                      Straight.addLast(NumOfCars);
  37.                else
  38.                      TurnLeft.addLast(NumOfCars);
  39.       }

  40.        public void setSign(boolean sign, boolean sign_direction) {
  41.               this.sign_direction=sign_direction;
  42.               this.sign=sign;
  43.        }
  44. }
复制代码
回复 使用道具 举报
本帖最后由 风悠悠 于 2013-10-19 21:25 编辑

  1. //东西向红绿灯代码
  2. package cn.itcast.traffic;
  3. import java.util.LinkedList;
  4. public class EastAndWest implements Runnable{
  5.     private LinkedList<String> Straight=new LinkedList<String>();
  6.     private LinkedList<String> TurnLeft=new LinkedList<String>();
  7.      private boolean sign=true;
  8.      private boolean sign_direction;
  9.      public void run() {
  10.           while(true){
  11.                 if(sign){
  12.                        synchronized(this){
  13.                              try {
  14.                                    wait();
  15.                                }
  16.                                catch (InterruptedException e) {
  17.                                     e.printStackTrace();
  18.                                 }
  19.                  if(Straight.size()!=0&&sign_direction&&!sign){
  20.                       System.out.println(Straight.removeFirst()+"直行 is traversing!");
  21.                  }

  22.                  if(TurnLeft.size()!=0&&!sign_direction&&!sign){
  23.                        System.out.println(TurnLeft.removeFirst()+"左转 is traversing!");
  24.                   }
  25.                  try {
  26.                        Thread.sleep(1000);
  27.                   }
  28.                   catch (InterruptedException e) {
  29.                        e.printStackTrace();
  30.                     }
  31.               }
  32.        }

  33.        public void getNumOfCars(String NumOfCars) {
  34.              if(NumOfCars.contains("E2W")||NumOfCars.contains("W2E"))
  35.                     Straight.addLast(NumOfCars);
  36.                else
  37.                     TurnLeft.addLast(NumOfCars);
  38.             }
  39.            
  40.          public void setSign(boolean sign,boolean sign_direction) {
  41.               this.sign_direction=sign_direction;
  42.               this.sign=sign;
  43.          }
  44. }
复制代码
  1. package cn.itcast.traffic;
  2. public class Dextroversion{
  3.       private String NumOfCars;
  4.       public void run() {
  5.           System.out.println(NumOfCars + "右转 is traversing !");
  6.        }

  7.       public void getNumOfCars(String NumOfCars) {
  8.          this.NumOfCars=NumOfCars;
  9.          run();
  10.     }
  11. }
复制代码
回复 使用道具 举报
赞,祝你早日进入黑马
回复 使用道具 举报
受不了你了,这不就是老张的代码吗
回复 使用道具 举报
小小鸟 发表于 2013-10-19 22:15
受不了你了,这不就是老张的代码吗

你没看完代码就不要乱说话,我只不过借鉴了,张孝祥老师代码里的,E2N,S2N这些方向的了名称而已,况且,视频里,写代码的过程那时候我就还没去看过,只是想先自己试试写了一下而已,还有回帖的话,请说些有意义的话,不要连别人的代码还没看完,就在那乱回复。
回复 使用道具 举报
好东西,正需要尼,参考下,谢谢啦
回复 使用道具 举报
To 金牌黑马 2013-10-20 18:59:12
10#
好的代码,有自己的总结和注释。分享是值得鼓励的。楼主注意哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马