高手们能不能跟我说下java里面scheduleAtFixedRate怎么用法的呢看API里面是这样写的:
scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) 
创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期;也就是将在 initialDelay 后开始执行,然后在 initialDelay+period 后执行,接着在 initialDelay + 2 * period 后执行,依此类推。但还是不太懂...那位高手能详细讲下呢·最好能举个小例子呢·

解决方案 »

  1.   


    你是要更新DB吧,另起一个新的进程来执行他是一个办法: 
    import java.util.Calendar; 
    import java.util.Date; 
    import java.util.Scanner; 
    import java.util.Timer; 
    import java.util.TimerTask; public class Test { 
    public static void main(String[] args) { 
    Timer timer = new Timer(false); //参数false保证,主进程结束后,timer任务不会被取消,依然可以定期循环执行。 
    MyTask task = new MyTask(); 
    Calendar cal = Calendar.getInstance(); 
    cal.set(2008, 11, 11, 0, 0, 0); // 在2008/12/11 00:00:00开始 
    Date firstTime = cal.getTime(); 
    int rate = 24 * 60 * 60 * 1000; // 每24小时执行一次 
    timer.scheduleAtFixedRate(task, firstTime, rate); 
    //Scanner scan = new Scanner(System.in); 
    //while (scan.hasNextLine()) { 
    // String line = scan.nextLine(); 
    // if ("QUIT".equalsIgnoreCase(line)) { 
    // timer.cancel(); 
    // System.out.println("QUIT"); 
    // break; 
    // } 
    //} 

    } class MyTask extends TimerTask { 
    @Override 
    public void run() { 
    // TODO 更新DB 

    } 办法2: 
    在某一个类中添加下面代码,这样在这个类第一次被加载是就开始执行了: 
    public class Test { 
    static { 
    Timer timer = new Timer(false); 
    MyTask task = new MyTask(); 
    Calendar cal = Calendar.getInstance(); 
    cal.set(2008, 11, 11, 0, 0, 0); // 在2008/12/11 00:00:00开始 
    Date firstTime = cal.getTime(); 
    int rate = 24 * 60 * 60 * 1000; // 每24小时执行一次 
    timer.scheduleAtFixedRate(task, firstTime, rate); 
    Scanner scan = new Scanner(System.in); 
    while (scan.hasNextLine()) { 
    String line = scan.nextLine(); 
    if ("QUIT".equalsIgnoreCase(line)) { 
    timer.cancel(); 
    System.out.println("QUIT"); 
    break; 



    ...... } 
    兄弟,够意思了吧
    第一时间帮你搞定
    够意思了吧
    希望对你有帮助
    ^_*
      

  2.   


    呵呵·就是要定时更新DB啊·太感谢2楼了···O(∩_∩)O