Проблема с таймером 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 или внешняя библиотека, возможно, вам не хватает библиотеки в настройках командной строки.

Другие вопросы по тегам