2010-12-21 59 views
1

我有一個奇怪的問題與計時器...我的計時器在NetBeans中測試時正常工作,但只要我從終端(Ubuntu 10.4)直接編譯並運行,應該發生每分鐘執行一次,不會再執行...有關Java定時器的問題

這裏是我的代碼:

public static void main(String[] args) throws SQLException 
{ 
    // schedule db update task to occur every 15 mins 
    Timer timer = new Timer(); 
    timer.scheduleAtFixedRate(new TimerTask() 
     { 
      @Override public void run() 
      { 
       doUpdate(); 
      } 
     } , 0, updateInterval * 1000 * 60); 
     System.out.print("Starting auto update @ "); 

    // schedule cpu usage check to occur every 1 min 
    Timer cpu = new Timer(); 
    cpu.scheduleAtFixedRate(new TimerTask() 
     { 
      @Override public void run() 
      { 
       getCPU(); 
      } 
     } , 0, cpuUpdateInterval * 1000 * 60); 
} 

有什麼,我做錯了什麼?

+0

嗯你調試,檢查cpuUpdateInterval的價值?他們可以有不同的價值嗎?這聽起來像它可能是平臺(VM)的依賴... – fasseg 2010-12-21 21:02:05

回答

1

有了這個代碼,

import java.util.Timer; 
import java.util.TimerTask; 

/** @see http://stackoverflow.com/questions/4503829 */ 
public class TimerTest { 

    private static final int MAX = 8; 

    public static void main(String[] args) { 
     final Timer cpu = new Timer(); 
     cpu.scheduleAtFixedRate(new TimerTask() { 

      private int count; 

      @Override 
      public void run() { 
       count++; 
       System.out.println("Count: " + count); 
       if (count == MAX) { 
        cpu.cancel(); 
       } 
      } 
     }, 100, 1000); 
    } 
} 

我得到預期的結果:

 
$ make run 
java -version 
java version "1.6.0_20" 
OpenJDK Runtime Environment (IcedTea6 1.9.2) (6b20-1.9.2-0ubuntu1~10.04.1) 
OpenJDK Client VM (build 19.0-b09, mixed mode, sharing) 
java TimerTest 
Count: 1 
Count: 2 
Count: 3 
Count: 4 
Count: 5 
Count: 6 
Count: 7 
Count: 8 
2

getCPU()是做什麼用的?如果它正在運行JNA/JNI代碼或外部庫,則可能是因爲缺少命令行設置中的庫。