2013-08-02 3 views
-3

У меня установлен таймер, который должен запускать код каждые 10 секунд, но вместо этого он запускает желаемый код только один раз. Я не могу понять, что я делаю неправильно. : {Что не так с моей функцией таймера таймера событий?

Timer timer = new Timer(); 

    timer.scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
        System.out.println("it only prints this once"); 
      } 
     }, 100, 100000); 

Заранее за вашу помощь.

+0

'0 * 0 * 100' = '0' не является проблемой в скажем, просто много шума – MadProgrammer

+0

Вы умножая первое из параметров на 0, это всегда будет нулевым – EProgrammerNotFound

+0

Я достал шум, все еще там. – Saucymeatman

ответ

2

Последние два аргумента scheduleAtFixedRate кажутся странными. Первый всегда равен 0 (это не проблема, просто означает, что перед первым исполнением нет задержки). Второй - 2 минуты, а не 0,1 секунды. Предполагается, что аргумент должен быть скоростью в миллисекундах. В течение 0,1 секунды вы должны использовать 100, а не 2 * 60 * 1000.

Попробуйте это:

timer.scheduleAtFixedRate(new TimerTask() { 
    @Override 
    public void run() { 
     System.out.println("it only prints this once"); 
    } 
}, 100, 100); 
+0

Я вынул шум, все еще там. – Saucymeatman

+0

@ user2619934 - Вы изначально задавали задачу, которая запускалась каждые 2 минуты, а не раз в 1/10 секунды. Теперь он настроен на запуск каждые 100 секунд (немного быстрее, чем раз в 2 минуты, но все же гораздо больше задержки, чем вы говорите, чего хотите). –

+0

Действительно? Это должна быть проблема! Я думал, что это измеряется в миллисекундах. – Saucymeatman

Смежные вопросы