Проблема с таймером Java
У меня странная проблема с таймерами... Мой таймер работает правильно при тестировании в 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 );
}
Есть ли что-то, что я делаю не так?
2 ответа
Решение
С этим кодом
import java.util.Timer;
import java.util.TimerTask;
/** @see http://stackru.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-версия Java-версия "1.6.0_20" Среда выполнения OpenJDK (IcedTea6 1.9.2) (6b20-1.9.2-0ubuntu1~10.04.1) OpenJDK Client VM (сборка 19.0-b09, смешанный режим, совместное использование) Java TimerTest Количество: 1 Количество: 2 Количество: 3 Количество: 4 Количество: 5 Количество: 6 Количество: 7 Количество: 8
Что значит getCPU()
делать? Если на нем запущен код JNA/JNI или внешняя библиотека, возможно, вам не хватает библиотеки в настройках командной строки.