从Java中的计时器任务队列中删除所有已取消的任务

Timer类的方法之一是int purge()方法。purge()方法从计时器的任务队列中删除所有已取消的任务。调用此方法不会影响计时器的行为,而是会从队列中删除对已取消任务的引用。从JDK 1.5开始,就使用了purge()方法。

purge()方法充当时空权衡的一种媒介,在此过程中,空间会交换时间。更具体地说,该方法的时间复杂度与n + c log n成正比,其中n是队列中的任务数,c是已取消任务的数。

声明-java.util.Timer.purge()方法的声明如下-

public int purge()

让我们看一下purge()方法的示例程序

示例

import java.util.*;
public class Example {
   public static void main(String[] args) {
      Timer timer = new Timer(); // creating timer
      TimerTask task = new TimerTask() // creating timer task 
      {
      public void run() {
         for(int i=1; i<=5;i++) {
            System.out.println("Task is running");
               if(i>=3) {
                  System.out.println("Task terminated");
                  timer.cancel();
                  break;
               }
            }
            //通过清除计时器打印任务的清除值
            System.out.println("任务的清除是 "+timer.purge());
         };
      };
      timer.schedule(task,7000,4000);
   }
}

输出结果

Task is running
Task is running
Task is running
Task terminated
任务的清除是 0