java基础——多线程(传统定时器)

一、定时器的应用
1、Timer类

2、TimerTask类

启动定时器的代码,过10秒钟后启动定时器,然后每过1秒定时器执行一次,前面的两个线程是每两秒钟暂停一次,这样很便于观察运行效果。

例子:

定时器的比喻用定时炸弹及炸弹第一次爆炸多久后继续爆炸的比喻说明,例如,东突恐怖组织定于几年几月几日几时几分几秒启动炸弹去炸鸟巢,等待救援警察赶到时,再次发生爆炸,结果把救援的警察也一锅端了。

new Timer().schedule(
	new TimerTask(){
		public void run() {
			System.out.println(Thread.currentThread().getName());
		}
	}, 10000, 1000);


/*需求二、每2秒或者4秒切换爆炸*/
	class MyTimerTask extends TimerTask{ //这个MyTimerTask继承TimerTask
	private int count; //count用于得0、1
	@Override
	public void run() {
		count = (count+1)%2;
		System.out.println("bombing");
		new Timer().schedule(new MyTimerTask(), 2000+2000*count);//间隔2或4秒爆炸
		}
			
	}

	new Timer().schedule(new MyTimerTask(), 2000);//定时器入口,参数一是用上面定义的MyTimerTask
	while (true) { //这个循环用于打印出定时器每秒的
		System.out.println(new Date().getSeconds());
		try {
		Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

打印:

bombing
36
37
bombing
38
39
40
41
bombing
42
43
bombing


注:quartz也是定时有关的。

你可能感兴趣的:(java基础,java,定时器)