package com.heima.test004.enumTest;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* 第4题: 定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法, 例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。
*
* @author Lee
* 答:
*
*
*/
public class Test003_EnumTest {
public static void main(String[] args) throws Exception {
Lamp currentLamp = Lamp.RED;
new Timer().schedule(new LampController(), 2000);
}
}
//定义一个定时器类
//如果不用这个类,直接在main里边写的话,会使得currentLamp强制定义为final,则无法改变其值
class LampController extends TimerTask {
private Lamp currentLamp;
@Override
public void run() {
currentLamp = currentLamp.turnNext();
System.out.println(currentLamp.getTime());
new Timer().schedule(new LampController(),currentLamp.getTime());
}
}
enum Lamp {
RED(1) {
@Override
public Lamp turnNext() {
System.out.println("现在是红灯");
System.out.println(this.getTime() + "s后变化");
return GREEN;
}
},
GREEN(5) {
@Override
public Lamp turnNext() {
System.out.println("现在是绿灯");
System.out.println(this.getTime() + "s后变化");
return YELLOW;
}
},
YELLOW(3) {
@Override
public Lamp turnNext() {
System.out.println("现在是黄灯");
System.out.println(this.getTime() + "s后变化");
return RED;
}
};
private int time;
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
// 因为每个灯都需要实现变化到下一个的灯的方法(且方法皆不相同),所以将它设为抽象
// 方法体则在每个枚举对象中实现
public abstract Lamp turnNext();
private Lamp() {
}
private Lamp(int time) {
this.time = time;
}
}
分享到:
相关推荐
游戏定时器,简易的源码,任何游戏都用的到的。
对于零基础的新手来说本小例子简单易懂,其中有定时器,图片切换以及定时器与图片切换相结合的应用,高手勿喷,本人也是才学MFC不久
VC 自定义定时器的使用,VC 自定义定时器的使用
java 定时器,自定义任务执行时间,自定义创建任务列表,管理任务!
自定义程序定时执行,定时器,delphi定时器软件,你只需要填写定时间,它就会自动到时间执行你定义的时间和参数啦,很简单的哦.
这是一个高仿Nubia 定时器的一个自定义view,实现了nubia定时器的大部分效果。
定时器在实际工程项目中有广泛的应用,但是MFC提供的定时器限制太多。所以本人根据实际项目自定义了一个定时器,能实现多对象多定时器。适用于需要使用定时器的大多数场合。
动态配置Spring定时器 添加定时任务:/scheduled/add-task 前端传递任务ID,cron表达式、待执行类路径、待执行方法名。 修改定时任务:/scheduled/update-task 前端传递任务ID,cron表达式、待执行类路径、待执行方法...
这是一个jar。自定义的一个Java定时器工具类。主要是结合Spring Boot一起使用,并在Spring Boot启动的时候一起启动运行。
如何在操作面板上设定定时器时间,同时如何输出定时器的剩余时间zip,西门子之如何在操作面板上设定定时器时间,同时如何输出定时器的剩余时间?
自定义定时器类,VS2010开发,最小堆实现。设置定时间隔,可根据定时器ID删除定时器,定时器到期回调
定时器 可以定时提醒
js 封装定时器解决多次调用定时器叠加问题及定时器无法清除的问题
自定义高精度定时器的使用,linux、vxworks、windows平台测试通过
定时器时间计算工具
spring定时器时间配置.时间的设置规则,并有代码予以演示。
LabVIEW实现定时器并获取时间日期。 项目可直接运行~
// iii)当基本的时间单位到期后(如SIGALRM信号到达时),遍历整个timer_manage,如果有自定义定时器的超时时间到了, //就把该回调函数添加到线程池的任务中,让线程池里面的线程去执行,然后将自定义定时器的超时...
最新单片机仿真 用定时器T0的中断实现长时间定时最新单片机仿真 用定时器T0的中断实现长时间定时最新单片机仿真 用定时器T0的中断实现长时间定时最新单片机仿真 用定时器T0的中断实现长时间定时最新单片机仿真 用...
主要是对LTE切换过程中的相关定时器进行说明