`

传统定时器技术回顾

阅读更多
/**
 * 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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics