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); } }