Java多线程之传统定时器技术

 

package javaplay.thread.test;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class TraditionalTimerTest {
	static int count = 0;

	public static void main(String[] args) {
		// new Timer().schedule(new TimerTask() {
		//
		// @Override
		// public void run() {
		// System.out.println("bombing!");
		//
		// }
		//
		// }, 3000, 3000);

		class MyTimerTask extends TimerTask {

			@Override
			public void run() {
				count = (count + 1) % 2;
				System.out.println("bombing!");
				new Timer().schedule(/*
										 * new TimerTask() {
										 * 
										 * @Override public void run() {
										 * System.out.println("bombing!!"); }
										 * 
										 * }
										 */new MyTimerTask(), 2000 * (1 + count));
			}

		}

		// 方式一
		new Timer().schedule(new MyTimerTask(), 2000);
		// 方式二
		new Timer().schedule(new MyTimerTask1(), 2000);
		// new Timer().scheduleAtFixedRate(TimerTask, Date, long);
		// 如果定义周一到周五的凌晨三点呢?
		// 开源工具quartz,知道即可,以后碰不到就当不知道
		// 碰到了看demo15分钟即可学会 知道就是一大进步
		// 把while注释一样会执行定时器
		while (true) {
			System.out.println(new Date().getSeconds());
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

类MyTimerTask1

 

 

package javaplay.thread.test;

import java.util.Timer;
import java.util.TimerTask;

public class MyTimerTask1 extends TimerTask {

	@Override
	public void run() {
		System.out.println("bombing!");
		new Timer().schedule(new MyTimerTask2(), 2000);

	}

}

类MyTimerTask2:

 

 

package javaplay.thread.test;

import java.util.Timer;
import java.util.TimerTask;

public class MyTimerTask2 extends TimerTask {

	@Override
	public void run() {
		System.out.println("bombing!!");
		new Timer().schedule(new MyTimerTask1(), 4000);

	}

}

 

 

 

 

 

 

 

posted @ 2016-11-17 20:28  john8169  阅读(114)  评论(0编辑  收藏  举报