【发布时间】:2011-05-29 01:52:16
【问题描述】:
我遇到了一个奇怪的计时器问题...我的计时器在 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 );
}
是不是我做错了什么?
【问题讨论】:
-
hmm 你调试过,检查过 cpuUpdateInterval 的值吗?他们可以有不同的价值观吗?这听起来可能取决于平台(VM)......
-
cpuUpdateInterval = 1。我在 ubuntu 的 netbeans 中运行它(没问题),然后从 jar 编译并运行(仅运行 doUpdate() 计时器)。我什至让它每次进入第二个计时器时都做一个 println 。它在第一次执行后永远不会被调用。
-
我会在命令行和 Netbeans 中检查 Java 版本——您可以通过切换 Netbeans 用于运行您的应用程序的 JVM 来进行调试。
-
这就是问题所在。 Netbeans 是 1.6.0,但 java -version 从终端返回的版本是 1.5.0。我更新了,一切都很好!
标签: java timer ubuntu-10.04