这是一个局域网ARP病毒查询的子程序,内部已写好,但定时器从没用过老板要求:
    系统打开后,每X分钟调用一次我的子程序getArp,我的子系统每Y分钟采集一次数据(0<Y<X),X,Y都要求以参数传入----getArp(int x,int y)请高手指点

解决方案 »

  1.   

    1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。 
    private java.util.Timer timer; 
    timer = new Timer(true); 
    timer.schedule(
    new java.util.TimerTask() { public void run() { //server.checkNewMail(); 要操作的方法 } }, 0, 5*60*1000); 
          第一个参数是要操作的方法,第二个参数是要设定延迟的时间,第三个参数是周期的设定,每隔多长时间执行该操作。    使用这几行代码之后,Timer本身会每隔5分钟调用一遍server.checkNewMail()方法,不需要自己启动线程。Timer本身也是多线程同步的,多个线程可以共用一个Timer,不需要外部的同步代码。 2、
    (1)Timer.schedule(TimerTask task,Date time)安排在制定的时间执行指定的任务。
    (2)Timer.schedule(TimerTask task,Date firstTime ,long period)安排指定的任务在指定的时间开始进行重复的固定延迟执行.
    (3)Timer.schedule(TimerTask task,long delay)安排在指定延迟后执行指定的任务.
    (4)Timer.schedule(TimerTask task,long delay,long period)安排指定的任务从指定的延迟后开始进行重复的固定延迟执行.
    (5)Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)安排指定的任务在指定的时间开始进行重复的固定速率执行.
    (6)Timer.scheduleAtFixedRate(TimerTask task,long delay,long period)安排指定的任务在指定的延迟后开始进行重复的固定速率执行.
      

  2.   

    封装一个方法
    加入Thread.sleep(你需要等待的时间)
      

  3.   

    看一看JDK的Timer用法,非常简单。实现一个TimerTask的接口,然后然将该接口传递给Timer.schedule()方法即可,具体的请看JDK文档。
      

  4.   


    import   java.util.*;
    import   java.io.*;class   myTask extends   java.util.TimerTask   {
          String   jobName;
          private   int   i;
          public   void   run()   {   //run   in   interface   Runnable
              System.out.println(jobName);
          }      public   myTask(String   jobName)   {
              this.jobName   =   jobName;
          }
      }  public   class   doTask   {
          private   java.util.Timer   timer;
          private   java.util.TimerTask   task;
          public   doTask(java.util.TimerTask   task)   {
              this.timer   =   new   Timer();
              this.task   =   task;
          }
          public   void   start(int   delay,   int   internal)   {
              timer.schedule(task,   delay   *   1000,   internal   *   1000);//利用timer.schedule方法
          }      public   static   void   main(String[]   args)   {
              java.util.TimerTask   task1   =   new   myTask("           Job   1");
              java.util.TimerTask   task2=   new   myTask("Job   2");
              doTask   pt   =   new   doTask(task1);
              pt.start(1,3);
              doTask   pt2   =   new   doTask(task2);
              pt2.start(1,1);
          }  }