------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
1. 枚举类的特点;
枚举类不能在外面单独创建对象;
2. 对于系统中灯的设计,使用了枚举类;
设计情况;
每个枚举元素各表示一个方向的控制灯,每一个枚举类都是一个实例对象;
注明;4个灯依次亮;
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);
创建一个构造函数,必须是私有的;参数的意义;opposite对应的灯;next下一个灯;lighted是否是绿色的;
private Lamp(String opposite,String next,boolean lighted){
this.opposite = opposite;
this.next = next;
this.lighted = lighted;
}
3. 枚举类里面实现了两个方法;
其中Lamp.valueOf(opposite).light();返回的是一个Lamp灯的对象;就是一个枚举类的对象;下面是这两个方法的具体实现;
某个灯变绿时,它对应方向的灯也要变绿,灯变绿的方法;
public void light(){
this.lighted = true;
if(opposite != null){
将字符串变成对象;Lamp.valueOf(opposite)返回的是灯的对象;
Lamp.valueOf(opposite).light();
}
System.out.println(name() + " lamp is green,下面总共应该有6个方向能看到汽车穿过!");
System.out.println(name() + " lamp is green,四个不受控制的一直是亮的,两个受控制的;");
}
灯变红时,对应方向的灯也要变红,并且下一个方向的灯要变绿
@return 返回下一个要变绿的灯
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;
}
4. 对于灯的变化时间,我们是通过线程实现的;代码如下;
/*每隔10秒将当前绿灯变为红灯,并让下一个方向的灯变绿
*参数nThreads代表 -池中的线程数
ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);
scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
command - 要执行的任务
initialDelay - 首次执行的延迟时间
period - 连续执行之间的周期
unit - initialDelay 和 period 参数的时间单位
timer.scheduleAtFixedRate(
new Runnable(){
public void run(){
System.out.println("来啊");
// 返回下一个变亮的灯;
currentLamp = currentLamp.blackOut();
}
},
10,
10,
TimeUnit.SECONDS);
}
5. 在路上不断的添加车辆;
//模拟车辆不断随机上路的过程
Executors这个是一个java线程并发库工具类。里面有大量的静态方法;是一个执行器类;
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);
}
}
});
6. 再用一个定时线程判断我们这个灯是不是亮着的;
//每隔一秒检查对应的灯是否为绿,是则放行一辆车
newScheduledThreadPool是定时器;
ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);
timer.scheduleAtFixedRate(
new Runnable(){
public 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);
7. 对于交通灯管理系统的总结;
1、用到了枚举类;
2、用到了定时线程和不定时线程
3、用到了集合;
4、Executors这个是一个java线程并发库工具类。里面有大量的静态方法;是一个执行器类;
相关推荐
视频文件"java_examine.wmv"很可能是由经验丰富的讲师或行业专家提供的面试题解析,涵盖了Java基础、面向对象设计、多线程、集合框架、异常处理、JVM内存管理、IO流、网络编程、数据库连接、设计模式等多个方面。...
交通灯管理系统视频教程01-7K月薪面试题破解之一_交通灯管理系统视频教程01-7K月薪面试题破解之一_交通灯管理系统视频教程01-7K月薪面试题破解之一_交通灯管理系统视频教程01-7K月薪面试题破解之一_交通灯管理系统...
【Aspnet中级程序员面试题】是针对有一定经验的Asp.net开发者设计的考核内容,主要涵盖C#、ASP.NET、SQL以及DBA等相关技术领域。这些知识点在实际开发和项目管理中至关重要,下面将对这些核心领域进行深入探讨。 **...
十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...
总结来说,"黑马程序员_毕向东_Java基础源码.rar"为初学者提供了一个深入学习Java编程的宝贵平台。通过学习和实践这些源代码,不仅可以巩固Java基础知识,还能培养良好的编程习惯和思维模式,为成为专业Java开发者...
C#_面试题_总结_2,希望对大家有所帮助。
java程序员早期面试题汇总 BAT经典面试题汇总.pdf Java常考面试题.pdf java面试题(题库全).doc java面试题-外企软件工程师面试题大全.rar 程序员面试题精选100题.pdf ... --------------------------------...
《黑马程序员Java面试宝典》是一本...通过《黑马程序员Java面试宝典》的学习,你可以系统地复习和掌握这些知识点,提高自己的面试竞争力。书中的问题和解答将帮助你更好地理解Java编程的本质,提升在面试中的自信心。
Android面试宝典包含两个宝典: 1【黑马项目宝典】虐面试官神器之必备黑马程序员项目宝典V1.1 内容包括:(1)电子商城(2)ListView系列(3)图像处理(4)动画效果(5)控件大全(6)新闻资讯(7)生活相关(8)...
资源名称:JAVA Android面试题讲解视频资源目录:【】2012黑马程序员01_面试题【】2012黑马程序员02_面试题【】2012黑马程序员03_面试题【】2012黑马程序员04_面试题【】225ce844c6c817e9614d8f17ea70a640【】...
张孝祥交通灯管理系统笔记 面试题视频教程笔记
收集了很多师兄师姐出去就业后,收集回来的企业面试.net程序员的面试题啊!不容易啊!1-8份面试题,好好看啊!都是技术题,祝面试上自己喜欢的职业
在《【海外之子】Java软件架构师之路精品视频教程_第一季_张孝祥面试题讲解补充系列_交通灯管理系统.pdf》中,我们预期会看到关于系统设计的详细讲解,包括但不限于以下几个方面: 1. **系统架构**:可能涉及微服务...
"bishiti.rar_C 面试题_c 笔试_笔试_面试_面试题"这个压缩包包含了针对C语言的笔试和面试题目,旨在帮助求职者更好地准备技术面试,提高通过率。下面将详细讨论C语言的一些关键知识点。 1. **数据类型**:C语言提供...
Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全
这些资源包括面试问题合集、整理的资料、Android面试题、学员入学面试总结、面试技巧、必须掌握的重点知识以及基础测试和入学考试题等,旨在全面覆盖Java基础知识和面试必备技能。 首先,面试问题合集和整理的资料...
IT程序员高频面试题梳理码农高频面试题梳理 P33 IT程序员高频面试题梳理码农 高频面试题梳理 IT程序员高频面试题梳理码农高频面试题梳理 IT程序员高频面试题 梳理码农高频面试题梳理 IT程序员高频面试题梳理码农高频...
"【黑马面试宝典】虐面试官神器之必备黑马程序员面试宝典V2.51"是为准备面试的程序员提供的一份宝贵的资源,它涵盖了JavaSE基础、面向对象、多态以及异常处理等多个核心知识点。本文将详细解析这些内容,帮助你更好...