Listing4-5证明一个简短执行
package com.owen.thread.chapter4; import java.util.Timer; import java.util.TimerTask; public class TimerDemo { public static void main(String[] args) { TimerTask task = new TimerTask() { @Override public void run() { System.out.println("alarm going off"); System.exit(0); } }; Timer timer = new Timer(); timer.schedule(task, 2000); // Execute one-shot timer task after // 2-second delay. } } Listing4-5描述一个应用,它在主线程第一次实例一个TimerTask的匿名子类,它重写了run()方法并输出一个警告信息,之后执行System.exit(0);因为这个应用要直到非守护线程结束了它才可以结束。这个主线程实例Timer和执行它的schedule()方法,将这个task作为第一个参数。第二个参数安排在一个初始延迟2000毫秒时间后一次执行任务。 执行上面的程序,你将会在2000毫秒后看到输出:alarm going off。 Listing4-6出现一个应用,证明一个定时的定时任务的重复执行。 Listing4-6 在大约一秒钟的时间间隔内显示当前毫秒值 package com.owen.thread.chapter4; import java.util.Timer; import java.util.TimerTask; public class TimerDemo4_6 { public static void main(String[] args) { TimerTask task = new TimerTask() { @Override public void run() { System.out.println(System.currentTimeMillis()); } }; Timer timer = new Timer(); timer.schedule(task, 0, 1000); } } Listing4-6描述一个应用,它默认主线程第一次实例一个TimerTask匿名子类,它重写run()方法,并输出当前时间(毫秒)。这个默认主线程在实例Timer和执行它的schedule()方法,将这个task作为第一个参数。第二个和第三个参数安排任务,在没有初始延迟时间而是每1000毫秒之后重复执行这个任务。 执行上面的代码,你将会看如下的结果。 1496449834769 1496449835768 1496449836768 1496449837768 1496449838768 1496449839768 1496449840768 ···· 源码下载:git@github.com:owenwilliam/Thread.git