日期:2014-05-20  浏览次数:20950 次

timer定时器问题
一个定时器做两个任务
一个是处理事情的用的
一个是读取文件的用的,隔30秒读取一次,如果文件里的时间和上面那个任务指定的时间不同,
那么上面那个任务执行的的指定时间是这个文件里读出来的时间,
就是不知道怎么关闭上面那个调度的任务,然后再开启任务,重新给它指定新的调度的时间!
求解 谢谢各位啦

------解决方案--------------------
定时器关闭好像不行吧,只能判断下,不让它执行任何代码就行了
------解决方案--------------------
那你应该用两个timer,一个是专门监测文件状态的,一个是处理事务
for example
Java code
import java.util.*;
import java.io.*;
class Test {
    public static void main(String[] args) {
        Timer timer1 = new Timer(); //监测文件用
        final Timer timer2 = new Timer(); //处理事情用
         timer1.scheduleAtFixedRate(new TimerTask() {
            long delay = 0;
            public void run() {
                try {
                    RandomAccessFile raf = new RandomAccessFile("controlfile", "rw");
                    String buf = raf.readLine();
                    raf.close();
                    long l = Long.valueOf(buf).longValue();
                    if (delay != l) { //文件时间改变了
                        delay = l; //取得间隔时间
                        timer2.cancel(); //停止处理事情的timer
                        timer2.scheduleAtFixedRate(new TimerTask() { //重新开启处理事情的timer
                            public void run() {
                                //处理事情
                            }
                        }, 0, delay);
                    }
                } catch (Exception e) {e.printStackTrace();}
            }
        }, 0, 30*1000);
    }
}

------解决方案--------------------
探讨

那你应该用两个timer,一个是专门监测文件状态的,一个是处理事务
for example
Java code
import java.util.*;
import java.io.*;
class Test {
public static void main(String[] args) {
Timer timer1 = new Timer(); //监测文件用
……