实现交通灯功能
来源:互联网 发布:昆山软件开发 编辑:程序博客网 时间:2024/06/04 18:15
这个功能的实现是经过观看张孝祥老师的视频后完成的。
视频下载地址:http://www.itheima.com/news/2012821/24cf70b28ae2.shtml
交通灯管理系统,主要有三个类,路Road 灯 Lamp 灯控制类 LampController
Road提供模拟汽车不断上路的过程 和 放行车辆的过程
Lamp提供灯光变换的功能
LampController 控制灯光的变换
package com.lihao.traffic;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;public class Road { private List<String> vechicles =new ArrayList<String>();private String name=null;public Road(String name){this.name=name;//模拟汽车不断上路的过程ExecutorService pool = Executors.newSingleThreadExecutor();pool.execute(new Runnable(){@Overridepublic void run() {for(int i=1;i<1000;i++){try {Thread.sleep((new Random().nextInt(10)+1)*1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}vechicles.add(Road.this.name+"_"+i);}}});//每隔一秒检查对应的灯是否为绿灯,如果是放行一辆车//在一秒之后,每隔一秒执行ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);timer.scheduleAtFixedRate(new Runnable(){@Overridepublic void run() {if(vechicles.size()>0){boolean lighted=Lamp.valueOf(Road.this.name).isLighted();if(lighted){System.out.println(vechicles.remove(0)+" is traversing");}}}}, 1, 1, TimeUnit.SECONDS);}}
package com.lihao.traffic;public enum Lamp { E2W("W2E","S2N",false),S2N("N2S","E2S",false),E2S("W2N","S2W",false),S2W("N2E","E2W",false), W2E(null,null,false),N2S(null,null,false),W2N(null,null,false),N2E(null,null,false), E2N(null,null,true),N2W(null,null,true),W2S(null,null,true),S2E(null,null,true); private Lamp(String opposite,String next,boolean lighted){ this.opposite=opposite; this.next=next; this.lighted=lighted; } private String opposite; private String next; private boolean lighted; public boolean isLighted(){ return lighted; } //某个灯变绿时,对应的灯也变绿 public void light(){ this.lighted=true; if(opposite!=null){ Lamp.valueOf(opposite).light(); } System.out.println(name()+" lamp is green 下面总共应该有6个方向会有车辆行驶!!"); } //某个灯变红时,对应的灯也变红,下个灯变亮 public Lamp blackOut(){ this.lighted=false; if(opposite!=null){ Lamp.valueOf(opposite).blackOut(); } Lamp nextLamp = null; if(next!=null){ nextLamp = Lamp.valueOf(next); System.out.println("绿灯从" + name() + "-------->切换为" + next); nextLamp.light(); } return nextLamp; }}
package com.lihao.traffic;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;public class LampController { private Lamp currentLamp;public LampController(){currentLamp = Lamp.E2W;currentLamp.light();//红灯绿灯间隔时间为10秒ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);timer.scheduleAtFixedRate(new Runnable(){public void run(){currentLamp = currentLamp.blackOut();}}, 10, 10, TimeUnit.SECONDS);}}
0 0
- 实现交通灯功能
- 交通灯管理实现
- [**80C51单片机实现交通灯**]
- 交通灯
- 交通灯
- 交通灯
- 交通灯
- 交通灯
- 交通灯
- 交通灯
- 交通灯
- 交通灯
- 交通灯
- 路口交通灯控制的模拟实现
- Java-----面试题之交通灯的实现
- 面试题交通灯管理系统实现
- 交通灯系统的实现与代码
- 接口技术课程设计 Lab8000实现交通灯控制系统
- jQuery EasyUI DataGrid根据字段动态合并单元格
- 堆栈-线性存储(出栈和入栈操作)
- Linux系统调用--mount/umount函数详解
- 802.11(wi-fi)的PHY层
- c语言实现发送http消息
- 实现交通灯功能
- 成绩排序 用一维数组存储学号和成绩,然后,按成绩排序输出
- HashMap存储结构浅析
- UBIFS介绍 - MTD网站
- 关于网页标准与JAVAScript执行的问题
- c3p0数据库连接池不能取到连接An attempt by a client to checkout a Connection has timed out
- Linux 的多线程编程的高效开发经验
- 插入排序
- jfreechart的例子