首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

timer定时器有关问题

2011-12-05 
timer定时器问题一个定时器做两个任务一个是处理事情的用的一个是读取文件的用的,隔30秒读取一次,如果文件

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(); //监测文件用
……

热点排行