Java Timer TimerTask

java.util.TimerTask是一个实现Runnable接口的抽象类,我们需要扩展这个类来创建我们自己的TimerTask,可以使用Java Timer类来调度TimerTask。

Java Timer类是线程安全的,多个线程可以共享单个Timer对象,而无需外部同步。Timer类使用java.util.TaskQueue以给定的定期间隔添加任务,并且在任何时间只能有一个线程运行TimerTask.

Java Timer类使用Object等待和通知方法来调度任务.

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

public class MyTimerTask extends TimerTask {

    @Override
    public void run() {

        System.out.println("Timer task started at:" + new Date());
        completeTask();
        System.out.println("Timer task finished at:" + new Date());
    }

    private void completeTask() {

        try
        {
            // assuming it takes 20 secs to complete the task
            Thread.sleep(20000);
        }
        catch ( InterruptedException e )
        {
            e.printStackTrace();
        }
    }

    public static void main(String args[]) {

        TimerTask timerTask = new MyTimerTask();
        // running timer task as daemon thread
        Timer timer = new Timer(true);
        timer.scheduleAtFixedRate(timerTask, 0, 10 * 1000);
        System.out.println("TimerTask started");
        // cancel after sometime
        try
        {
            Thread.sleep(120000);
        }
        catch ( InterruptedException e )
        {
            e.printStackTrace();
        }
        timer.cancel();
        System.out.println("TimerTask cancelled");
        try
        {
            Thread.sleep(30000);
        }
        catch ( InterruptedException e )
        {
            e.printStackTrace();
        }
    }

}

结果:

TimerTask started
Timer task started at:Thu Nov 24 12:35:03 CST 2016
Timer task finished at:Thu Nov 24 12:35:23 CST 2016
Timer task started at:Thu Nov 24 12:35:23 CST 2016
Timer task finished at:Thu Nov 24 12:35:43 CST 2016
Timer task started at:Thu Nov 24 12:35:43 CST 2016
Timer task finished at:Thu Nov 24 12:36:03 CST 2016
Timer task started at:Thu Nov 24 12:36:03 CST 2016
Timer task finished at:Thu Nov 24 12:36:23 CST 2016
Timer task started at:Thu Nov 24 12:36:23 CST 2016
Timer task finished at:Thu Nov 24 12:36:43 CST 2016
Timer task started at:Thu Nov 24 12:36:43 CST 2016
TimerTask cancelled
Timer task finished at:Thu Nov 24 12:37:03 CST 2016

 

posted on 2016-11-24 12:37  我叫涛哥  阅读(103)  评论(0)    收藏  举报

导航