黑马程序员 java 面试之交通信号灯
来源:互联网 发布:mysql增删改查sql语句 编辑:程序博客网 时间:2024/05/16 15:51
----------- android培训、java培训、java学习型技术博客、期待与您交流! --------
/*需求:交通灯。分析:每条道路的车都只要看直行和左转。所以,要考虑的道路就只有四条,其他的都一样。道路上的车和灯都是在变化,可以定义定时器来完成。*/class Road{//每一条路可以看成一个集合,集合里有各种车,定时器每隔1秒产一辆车。private List<String> list = new ArrayList<String>();private name;Road(String name){this.name = name;ExecutorService pool = Executors.newSigleThreadExecutor();pool.execute(new Runnable(){public void run(){for(int x = 0; x < 100 ; x++){try{Thread.sleep((new Random().nextInt(10) + 1) * 1000);}catch (Exception e){System.out.println(e.toString());}list.add(Road.this.name + "" + x);//启动一个线程,控制出现的车数。}}}); ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);//出现的间隔。 timer.scheduleAtFixedRate(new Runnable() {public void run(){if(list.size() > 0){boolean light =Lamp.valueOf(Road.this.name).isLighted();if(light)System.out.println(list.remove(0)+ "cheleile");}} }, 1, 1, TimeUnit.SECONDS)}}enum Lamp {//交通道路灯,只要考虑四条路即可。S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false),N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false),S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true);private boolean lighted;private String opposite;private String next;private Lamp(){}private Lamp(String opposite){this.opposite = opposite;}private Lamp(String opposite,String next,boolean lighted){this.opposite = opposite;this.next = next;this.lighted = lighted;}public boolean isLigthed(){return lighted;}public void light()//出现的灯。{this.lighted = true;if(opposite != null)Lamp.valueOf(opposite).light();//反向的灯。}public Lamp blackOut()//下一个灯。{this.lighted = false;if(opposite != null)Lamp.valueOf(opposite).blackOut();Lamp nextLamp = null;if(next != null)nextLamp = Lamp.valueOf(next);Lamp.valueOf(next).light();return nextLamp;}}class LampController //定时器,每隔10秒将当前灯变红和将下一个灯变绿。{private Lamp currentLamp;public LampController(){currentLamp = Lamp.S2N;currentLamp.light();ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);timer.scheduleAtFixedRate(new Runnable(){public void run(){currentLamp = currentLamp.blackOut();}} ,10,10,TimeUnit.SECONDS)}}class Function //主程序入口。{public static void main(String[] args){String[] dirRoads = {"S2N","S2W","E2W","E2S","N2S","N2E","W2E","W2N","S2E","E2N","N2W","W2S"};for( String dirRoad : dirRoads)new Road(dirRoad);new LampController();}}
----------- android培训、java培训、java学习型技术博客、期待与您交流! -----------
0 0
- 黑马程序员 java 面试之交通信号灯
- 黑马程序员 7K面试之交通信号灯
- 黑马程序员--交通信号灯
- 黑马程序员:交通信号灯(java实现)
- “黑马程序员”7k面试交通信号灯代码
- (黑马程序员)交通信号灯系统
- 黑马程序员_java 交通信号灯系统
- 黑马程序员——交通信号灯问题
- 黑马程序员——交通信号灯
- 黑马程序员12交通信号灯系统
- 黑马程序员_交通信号灯管理需求及思路。
- (黑马程序员)学习笔记,交通信号灯系统
- 黑马程序员--高薪面试题交通信号灯管理系统
- java(交通信号灯系统)
- 黑马程序员---java7k面试---12交通
- 模拟交通信号灯(Java)
- 黑马程序员——冲刺阶段——7K面试题(交通信号灯系统)
- 黑马程序员--Semaphore(信号灯)
- 一种基于任务(事件驱动)的程序运行模型研究
- 网络编程:Reactor与Proactor的概念
- hdu 1505 City Game 1506的二维
- NYOJ 647 奋斗的小蜗牛在请客
- jQuery 参考手册 - 选择器 (.class.class)
- 黑马程序员 java 面试之交通信号灯
- cocos2dx 3.0 编译不过问题解决
- c语言创建并输出二叉树
- C++ Templates:深入模板基础
- uniDAC的安装
- 使用Xcode和Instruments调试解决iOS内存泄露
- 进程管理:fork与exec函数及fork子进程和父进程
- JS前台遍历所有文本框,验证是否为空
- JavaScript 编程思想 null undefined 的区别