java.util.Timer一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。
public class TimerTest{ public static void main(String []args ){ //创建Timer(定时器)类 Timer timer = new Timer(); //创建TimerTask,就是定时器需要执行的代码,任务只能被调度一次,已经调度过的任务不能再调度。 TimerTask task = new TimerTask() { //因为任务只能被调度一次,所以一般直接写内部类 public void run() { System.out.println("xixi"); } }; /** * schedule调度 * - void schedule(TimerTask task, Date time) * 在指定的时间执行指定的任务 * - void schedule(TimerTask task, Date firstTime, long period) * 在指定的时间执行指定的任务,然后每隔period时间执行一次 * - void schedule(TimerTask task, long delay) * 在delay毫秒后执行指定的任务。 * - void schedule(TimerTask task, long delay, long period) * 在delay毫秒后执行指定的任务,然后每隔period时间执行一次。 */ // timer.schedule(task, new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2016-06-16 17:17:00")); timer.schedule(task,10000); } }
示例:现在有两个任务A和B,没过5秒执行A,再过3秒执行B,如此交替循环执行。
public class TimerTaskTest{ private static Timer timer; public static void main(String []args ){ timer = new Timer(); timer.schedule(new A(), 5000); } //通过继承TimerTask类来编写任务 static class A extends TimerTask { public void run() { System.out.println("hello"); timer.schedule(new B(), 3000); } } static class B extends TimerTask { public void run() { System.out.println("world"); timer.schedule(new A(), 5000); } } }
在实际项目上用到较多Quartz是一个完全由Java编写的开源作业调度框架。
时间: 2024-10-22 16:13:38