传统定时器技术回顾
/** * 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() {@Overridepublic void run() {log.info("炸毁目标!");}}, 10 * 1000l);// 10秒后炸毁目标/************ 连环Bomb ***********/new Timer().schedule(new TimerTask() {@Overridepublic void run() {log.info("连环Bomb启动,目标销毁,哦也!");}}, 10 * 1000l, 3 * 1000l);// 10秒后启动第一个Bomb,然后每隔3秒启动一个Bomb!(连环炸,够爽,o(∩_∩)o// 哈哈)/************ 子母Bomb ***********/new Timer().schedule(new TimerTask() {@Overridepublic void run() {log.info("母Bomb启动,目标销毁,哦也!");new Timer().schedule(new TimerTask() {@Overridepublic void run() {log.info("子Bomb启动,目标销毁,哦也!");}}, 2 * 1000l);}}, 2 * 1000l);class MyBomb01 extends TimerTask {@Overridepublic 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() {@Overridepublic void run() {log.info("终于到了2013-08-15晚上10点45分,启动Bomb,目标销毁,任务完成,睡觉去,o(∩_∩)o 哈哈");}}, firstTime);/************ 定时Bomb,每天晚上10点45分,启动Bomb ***********/new Timer().schedule(new TimerTask() {@Overridepublic 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);@Overridepublic void run() {log.error("连环子母Bomb启动,目标销毁,哦也!");new Timer().schedule(new MyBomb03(), 2 * 1000l);}}class MyBomb03 extends TimerTask {private static Log log = LogFactory.getLog(MyBomb03.class);@Overridepublic void run() {log.error("连环子母Bomb启动,目标销毁,哦也!");new Timer().schedule(new MyBomb02(), 4 * 1000l);}}