Java中基本知识梳理【定时器实现多线程】-----2015年3月15日

Timer介绍:

(1)基本方法:

  

public Timer():创建一个新计时器。相关的线程 作为守护程序运行。

public void schedule(TimerTask task, long delay, long period)

安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。 

public void schedule(TimerTask task, Date time)

安排在指定的时间执行指定的任务。如果此时间已过去,则安排立即执行该任务。 

参数:

task - 所要安排的任务。

time - 执行任务的时间。 

public void cancel()

终止此计时器,丢弃所有当前已安排的任务。这不会干扰当前正在执行的任务(如果存在)。一旦终止了计时器,那么它的执行线程也会终止,并且无法根据它安排更多的任务。

TimerTask介绍:

public abstract void run()

此计时器任务要执行的操作。 

public boolean cancel()

取消此计时器任务。如果任务安排为一次执行且还未运行,或者尚未安排,则永远不会运行。如果任务安排为重复执行,则永远不会再运行。(如果发生此调用时任务正在运行,则任务将运行完,但永远不会再运行。)  

定时器如何实现多线程:

将Timer对象和TimerTask对象绑定利用Timer对象中的schedule方法触发TimerTask类中run()方法实现多线程。

实例:

package test1;

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

class Task extends TimerTask{
    private  int a=1;
    private int sum=0;
    public void run()
    {
        sum+=a;
        a++;
        System.out.println("HELLO");
        if(a>3)
        {
            System.out.println(sum);
            this.cancel();//这里的cancel()方法是TimerTask对象在调用,其中Timer和Timer类都含有cancel()方法
        }    
    }
}
public class TimerTask1 {
        public static void main(String[] args) {
            Timer time=new Timer();
            Task t=new Task();
            time.schedule(t, new Date(), 1);
            
        }
}
原文地址:https://www.cnblogs.com/khbcsu/p/4338892.html