Java中的定时器的操作

1.重复的Timer的使用

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/*
 * 传统的定时器的例子
 */
public class TraditionalTimerTest {
    @SuppressWarnings("deprecation")
    public static void main(String[] args) throws InterruptedException {
	//schedule是确定timer1执行的方法,第一个参数确定
	//需要执行的动作,第二个参数确定的延时多少时间
	//第三个参数是指重复定时器动作
	new Timer().schedule(new TimerTask() {	
	    @Override
	    public void run() {
		System.out.println("bombing......");
	    }
	},10000,3000);
	while(true)
	{
	    System.out.println(new Date().getSeconds());
	    Thread.sleep(1000);	    
	}
    }
}

 

2.不重复的定时器Timer的操作

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/*
 * 传统的定时器的例子
 */
public class TraditionalTimerTest {
    @SuppressWarnings("deprecation")
    public static void main(String[] args) throws InterruptedException {
	//schedule是确定timer1执行的方法,第一个参数确定
	//需要执行的动作,第二个参数确定的延时多少时间
	new Timer().schedule(new TimerTask() {	
	    @Override
	    public void run() {
		System.out.println("bombing......");
	    }
	},10000);
	while(true)
	{
	    System.out.println(new Date().getSeconds());
	    Thread.sleep(1000);	    
	}
    }
}

3.可以在定时器Timer中声明新的Timer,是不能运行的

import java.util.Timer;
import java.util.TimerTask;
/*
 * 传统的定时器的例子
 */
public class TraditionalTimerTest {
    public static void main(String[] args) throws InterruptedException {
	//schedule是确定timer1执行的方法,第一个参数确定
	//需要执行的动作,第二个参数确定的延时多少时间
	new Timer().schedule(new TimerTask() {	
	    @Override
	    public void run() {
		System.out.println("bombing......");
		//假定:使用循环的方式,讲当前外层的Timer传递给内部的schedule
		//从而使Timer不断的循环
		//结果:Timer->this使用一次后,就找不到了,因为他是匿名类,
		//如果想要实现这样的功能需要使用内部类
		new Timer().schedule(this,1000);
	    }
	},10000);
    } 
}

4.按照3中的思路来写出正确的代码

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/*
 * 传统的定时器的例子
 */
public class TraditionalTimerTest {
    @SuppressWarnings("deprecation")
    public static void main(String[] args) {
	//begin of implement BombTask class
	class BombTask extends TimerTask{	 
	    @Override
	    public void run() {
		System.out.println("bombing......");
		new Timer().schedule(new BombTask(),2000);
	    }
	}//end of implement BombTask class
	
	//generate new Timer and use BombTask as param
	new Timer().schedule(new BombTask(),5000);
	while (true) {
	    System.out.println(new Date().getSeconds());
	    try {
		Thread.sleep(1000);
	    } catch (InterruptedException ex) {	
		ex.printStackTrace();
	    }
	}
    } 
}

你可能感兴趣的:(Java中的定时器的操作)