Java定时器的问题

Java定时器的问题,java,timer,ubuntu-10.04,Java,Timer,Ubuntu 10.04,我对计时器有个奇怪的问题。。。在NetBeans中测试时,我的计时器工作正常,但只要我直接从终端(Ubuntu 10.4)编译并运行,每分钟应该执行一次的任务就不会再执行了 这是我的密码: public static void main(String[] args) throws SQLException { // schedule db update task to occur every 15 mins Timer timer = new Timer(); timer

我对计时器有个奇怪的问题。。。在NetBeans中测试时,我的计时器工作正常,但只要我直接从终端(Ubuntu 10.4)编译并运行,每分钟应该执行一次的任务就不会再执行了

这是我的密码:

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 );
}
有什么我做错了吗?

getCPU()做什么?如果它运行的是JNA/JNI代码或外部库,则可能是命令行设置中缺少该库。

使用此代码

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 $makerun java版本 java版本“1.6.0_20” OpenJDK运行时环境(IcedTea6 1.9.2)(6b20-1.9.2-0ubuntu1~10.04.1) OpenJDK客户端虚拟机(构建19.0-b09,混合模式,共享) java时间测试 计数:1 计数:2 计数:3 计数:4 计数:5 计数:6 计数:7 计数:8
嗯,您调试并检查了cpuUpdateInterval的值了吗?他们会有不同的价值观吗?这听起来可能与平台(VM)有关…cpuUpdateInterval=1。我在ubuntu的netbeans中运行它(没有问题),然后从jar编译和运行(只运行doUpdate()计时器)。我甚至让它每次进入第二个计时器都打印一次。我会在命令行和Netbeans上检查Java版本——您可以通过切换运行应用程序的JVM Netbeans来进行调试。这就是问题所在。Netbeans是1.6.0,但是java从终端返回的版本是1.5.0。我更新了,一切都很好!