TimerTask запускается только один раз

У меня есть задача с именем timer:

timer.schedule(new task1(), 1000*minutes);

Задание:

class task1 extends TimerTask {
        @Override

    public void run()
    {
            try {
                task();
            } catch (SAXException ex) {
                Logger.getLogger(task1.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ParserConfigurationException ex) {
                Logger.getLogger(task1.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(task1.class.getName()).log(Level.SEVERE, null, ex);
            } catch (URISyntaxException ex) {
                Logger.getLogger(task1.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InterruptedException ex) {
                Logger.getLogger(task1.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
    public void task() throws SAXException, ParserConfigurationException, IOException, URISyntaxException, InterruptedException {
        Pinner_xml t = new Pinner_xml();
        t.xml(frame.t1.getText());

        frame.output.append("task 1 \n");
        System.out.println("task 1 is running");
    }
}

frame — это имя моего фрейма, а output — это текстовое поле. Почему я запускаю задачу, все это «выполняется задача 1» в диалоговом окне вывода в Netbeans, и задача запускается только один раз.


person Barak    schedule 18.06.2013    source источник


Ответы (3)


Используйте javax.swing.Timer для Swing. , так как все делается в EDT (по умолчанию) с использованием класса Timer, который является предварительным условием, см. как пользоваться таймером. Еще один связанный пример для обновления JButton по таймеру и еще один для работа с Swing Timer и прокрутка текста

person nIcE cOw    schedule 18.06.2013

Для повторного выполнения задачи используйте методы Timer.schedule(TimerTask task, long delay, long period) или scheduleAtFixedRate

person Evgeniy Dorofeev    schedule 18.06.2013

Прочтите документацию по таймеру. Существует еще один переопределенный метод. для многократного выполнения задачи вы используете метод, который выполняется только один раз. Вы можете использовать

scheduleAtFixedRate (задача TimerTask, длительная задержка, длительный период)

or

расписание (задача TimerTask, длительная задержка, длительный период)

person Yahya Arshad    schedule 18.06.2013