02-多线程

10秒后爆炸:

package cn.itcast.demo.po;

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

public class TradictionalTimer {
	public static void main(String[] args) {
		// 创建一个定时器
		new Timer().schedule(new TimerTask() {
			@Override
			public void run() {
				System.out.println("bombing!");
			}
		}, 10000);	// 10秒后执行run方法
		
		// 观察定时器的运行
		while (true) {
			System.out.println(new Date().getSeconds());
			// 每一秒中打印一次
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

第一次10秒后炸,以后每隔3秒后炸一次

package cn.itcast.demo.po;

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

public class TradictionalTimer {
	public static void main(String[] args) {
		// 创建一个定时器
		new Timer().schedule(new TimerTask() {
			@Override
			public void run() {
				System.out.println("bombing!");
			}
		}, 10000, 3000);	
	}
}

第一次2秒后爆炸,之后是4秒和2秒间隔循环爆炸

package cn.itcast.demo.po;

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

public class TradictionalTimer {
	
	private static int count = 0;
	public static void main(String[] args) {
		class MyTimer extends TimerTask {
			@Override
			public void run() {
				count = (count+1) % 2;		// 0和1之间切换
				System.out.println("bombing!");	// 炸完之后又创建了一个定时器,无限循环
				new Timer().schedule(new MyTimer(), 2000+2000*count);
			}
		}
		
		// 创建一个定时器
		new Timer().schedule(new MyTimer(), 2000);
		
		while (true) {
			try {
				Thread.sleep(1000);
				System.out.println(new Date().getSeconds());
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

 

posted @ 2017-08-15 17:36  半生戎马,共话桑麻、  阅读(83)  评论(0)    收藏  举报
levels of contents