`

传统定时器技术回顾

阅读更多
/**
 * TraditionalTimer.java
 * cn.com.songjy.test.socket.thread
 * Function: TODO 
 *
 *   version    date      author
 * ──────────────────────────────────
 *   	1.0	 2013-8-15    songjy
 *
 * Copyright (c) 2013, TNT All Rights Reserved.
 */

package cn.com.songjy.test.socket.thread;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * ClassName:TraditionalTimer
 * 
 * @author songjy
 * @version 1.0
 * @since v1.0
 * @Date 2013-8-15 下午9:33:29
 */

public class TraditionalTimer {

	private static Log log = LogFactory.getLog(TraditionalThread.class);
	private static long count;

	public static void main(String[] args) {

		/************ 定时Bomb ***********/
		new Timer().schedule(new TimerTask() {

			@Override
			public void run() {
				log.info("炸毁目标!");
			}
		}, 10 * 1000l);// 10秒后炸毁目标

		/************ 连环Bomb ***********/
		new Timer().schedule(new TimerTask() {

			@Override
			public void run() {
				log.info("连环Bomb启动,目标销毁,哦也!");
			}
		}, 10 * 1000l, 3 * 1000l);// 10秒后启动第一个Bomb,然后每隔3秒启动一个Bomb!(连环炸,够爽,o(∩_∩)o
									// 哈哈)

		/************ 子母Bomb ***********/
		new Timer().schedule(new TimerTask() {

			@Override
			public void run() {
				log.info("母Bomb启动,目标销毁,哦也!");
				new Timer().schedule(new TimerTask() {

					@Override
					public void run() {
						log.info("子Bomb启动,目标销毁,哦也!");
					}
				}, 2 * 1000l);
			}
		}, 2 * 1000l);

		class MyBomb01 extends TimerTask {

			@Override
			public void run() {
				count = (count + 1) % 2;
				log.info("连环子母Bomb启动,目标销毁,哦也!");
				new Timer().schedule(new MyBomb01(), 2 * 1000l + 2000 * count);
			}

		}
		
		/************ 连环子母Bomb一 ***********/
		new Timer().schedule(new MyBomb01(), 2 * 1000l);// 第一个Bomb2秒后启动,间隔4秒后第二个Bomb启动,如此循环!(够狠的,嘻嘻)
		
		/************ 连环子母Bomb二 ***********/
		new Timer().schedule(new MyBomb02(), 2 * 1000l);//第一个Bomb与第二个Bomb2秒后启动,第三个间隔4秒后启动,此后与上一个【连环子母Bomb一】一样的规律
		
		String t = "2013-08-15 22:45:00";
		Date firstTime = null;
		try {
			firstTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(t);
		} catch (ParseException e) {
			log.error(e.getMessage(), e);
		}

		/************ 定时Bomb,2013-08-15晚上10点45分,启动Bomb ***********/
		new Timer().schedule(new TimerTask() {

			@Override
			public void run() {
				log.info("终于到了2013-08-15晚上10点45分,启动Bomb,目标销毁,任务完成,睡觉去,o(∩_∩)o 哈哈");
			}
		}, firstTime);

		/************ 定时Bomb,每天晚上10点45分,启动Bomb ***********/
		new Timer().schedule(new TimerTask() {

			@Override
			public void run() {
				log.info("现在又是晚上10点45分,启动Bomb,目标销毁,任务完成,又该睡觉去,(*^__^*) 嘻嘻");
			}
		}, firstTime, 24 * 60 * 60 * 1000l);

		// 为了查看效果,可以添加以下代码
		while (true) {
			log.info(Calendar.getInstance().get(Calendar.SECOND));// 输出当前的秒数
			try {
				Thread.sleep(1 * 1000l);
			} catch (InterruptedException e) {
				log.error(e.getMessage(), e);
			}
		}

	}

}


class MyBomb02 extends TimerTask {
	
	private static Log log = LogFactory.getLog(MyBomb02.class);

	@Override
	public void run() {
		log.error("连环子母Bomb启动,目标销毁,哦也!");
		new Timer().schedule(new MyBomb03(), 2 * 1000l);
	}

}

class MyBomb03 extends TimerTask {
	
	private static Log log = LogFactory.getLog(MyBomb03.class);

	@Override
	public void run() {
		log.error("连环子母Bomb启动,目标销毁,哦也!");
		new Timer().schedule(new MyBomb02(), 4 * 1000l);
	}

}


引自:http://down.51cto.com/data/443407
分享到:
评论

相关推荐

    Java多线程与并发库高级应用视频教程22集

    资源名称:Java多线程与并发库高级应用视频教程22集资源目录:【】01传统线程技术回顾【】02传统定时器技术回顾【】03传统线程互斥技术【】04传统线程同步通信技术【】04传统线程同步通信技术_分割纪录【】05线程...

    定时器技术应用2.zip

    定时器技术应用2.zip

    555定时器555定时器

    555定时器 555定时器 555定时器 555定时器

    辅助软件 定时器计算器 辅助软件 定时器计算器

    辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 ...

    微机原理与接口技术综合实验论文 定时器

    可编程的计数器/定时器是为了方便计算机系统的设计和应用而研制的,很容易和系统总线连接。它综合了软件定时和硬件定时的双重优点,定时时间很容易地通过软件设置和改变,定时过程通过硬件实现,当定时时间到时,可...

    MFC定时器的使用 MFC定时器的使用

    在Windows编程环境中,MFC(Microsoft Foundation Classes)库提供了一种方便的方式来实现应用程序中的定时功能,这就是MFC定时器。MFC定时器主要用于在特定时间间隔后触发一个事件,这在许多应用场景中都非常有用,...

    【STM32】HAL库-使用一个定时器使能另一个定时器-主定时器触发模式demo

    如果先初始化从模式定时器3,定时器3工作在触发模式下,TRGI信号来源为定时器2的TRGO,而定时器2还未初始化,故TRGO信号来源默认是UG位,故在定时器2初始化过程中会置位UG位,从而触发定时器3的从模式触发模式,导致...

    多定时器复用一个硬件定时器

    标题提到的“多定时器复用一个硬件定时器”是一种高效利用硬件资源的技术,能够减少硬件成本并优化系统性能。 硬件定时器通常由微处理器中的计数器/定时器模块提供,它们可以按照预设的时间间隔产生中断。然而,...

    STM32 定时器级联

    STM32定时器级联是STM32微控制器中一种高效利用硬件资源、扩展定时功能的方法。在STM32系列芯片中,定时器可以被配置为级联模式,以实现更复杂的定时或计数任务,比如产生精确的PWM输出、高分辨率的计数等。下面我们...

    计算机定时器技术PPT学习教案.pptx

    计算机定时器技术PPT学习教案.pptx

    VC++定时器定时器使用

    在VC++编程环境中,定时器(Timer)是一个非常重要的组件,它允许程序在特定时间间隔后执行特定的任务。定时器广泛应用于各种应用中,如动画更新、后台数据刷新、用户界面响应等。以下是对VC++定时器使用进行的详细...

    ACE完整牛逼定时器

    **ACE完整牛逼定时器详解** ACE(Adaptive Communication Environment)是一个开源的、跨平台的C++库,专为分布式实时系统设计,提供了一系列高级网络编程接口和工具。在这个“ACE完整牛逼定时器”中,我们将深入...

    555集成定时器 555集成定时器 555集成定时器

    555集成定时器 555集成定时器 555集成定时器

    定时器0和定时器1 ARM PROTEUS

    在嵌入式系统开发中,ARM处理器是一种广泛应用的微处理器架构,它提供了丰富的硬件资源,包括定时器。本文将深入探讨ARM处理器中的定时器0和定时器1,并结合PROTEUS仿真工具进行讲解。 定时器在嵌入式系统中扮演着...

    51定时器计算工具

    51定时器计算工具是一款专为51单片机编程者设计的应用软件,它简化了51系列定时器的设置和计算过程。51单片机是广泛应用在电子工程、物联网设备、自动化控制等领域的微控制器,其内部包含了多个定时器资源,用于执行...

    电子技术课设: 30s篮球定时器

    使用74LS192及74LS48芯片做的定时器,都是一些数电的知识,电路中使用的芯片资料可以在www.icpdf.com 网站上面查找的到。有问题请各位指出,

    VC++高效定时器实现

    在VC++编程环境中,开发人员经常需要实现定时任务,例如更新UI、执行周期性操作或者进行性能测试等。默认的Windows消息循环...通过学习这些资料,开发者可以更好地理解和应用这种高效定时器技术,提升自己的编程技能。

    STM32定时器计算工具

    STM32定时器计算工具是专为STM32微控制器设计的一款实用软件,它简化了在嵌入式系统开发过程中对定时器配置的复杂计算。STM32是意法半导体(STMicroelectronics)推出的基于ARM Cortex-M内核的微控制器系列,广泛...

    STM32F2系列技术培训 通用定时器 TIM

    STM32F2系列技术培训 通用定时器 TIM

    uni-app定时器实例

    - 使用防抖(debounce)或节流(throttle)技术,减少不必要的函数调用,优化性能。 6. 混合开发中的定时器问题: - 当在H5环境下,uni-app的定时器与原生浏览器的定时器并无太大区别,但在小程序环境中,需要考虑其...

Global site tag (gtag.js) - Google Analytics