Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > java.util.Timer


Автор: Magistrus 18.5.2007, 16:45
Как остановить и сново запустить java.util.Timer

есть метод cancel() но он у мен не рабатает 
есть еще purge() - этот метод я вобще не понимаю зачем

java.swing.Timer не предлагать, так как желательно чтоб выполняемая задача была отдельным классом 

вот так я создаю массив таймеров 
Код

        timers = new ArrayList<java.util.Timer>();
        for (int i = 1; i<=CountTpp; i++) {
            java.util.Timer tempTimer = new java.util.Timer();
            tempTimer.schedule(new  TaskPotokTimer(applet,panel.get(i-1),i),(long) 0, (long) 30000);
            timers.add(tempTimer);
        }
    }


а вот так пытаюсь тормознуть:
Код

    java.util.Timer timer = timers.get(i);

    private void stopTimer() {
       startButton.setEnabled(true);
       stopButton.setEnabled(false);
       timer.purge();
       timer.cancel();        
    }


помогит кто чем можете!

Автор: COVD 18.5.2007, 17:25
Таймер - это поток. Его нельзя повторно использовать. Его можно один раз запустить и один раз остановить. После этого надо создать новый таймер. 

В один таймер можно поставить несколько задач, т.е. необязательно создавать на каждую задачу свой таймер и класть их в массив. Это нужно делать в том случае, когда выполнение задач перекрывается во времени, или время выполнения задачи непредсказуемо. Тогда оправдано каждую задачу выполнять в отдельном потоке, т.е. таймере.  Это более надежно, но и требует больше ресурсов из-за создания в каждом таймере отдельного потока. 

Автор: dorogoyIV 19.5.2007, 16:25
можно так приостановить и продолжить какой нибудь процесс
Код

Thread.suspend(); // pause
Thread.resume();  // to continue


Автор: w1nd 19.5.2007, 19:58
dorogoyIV, вы документацию читаете? Эти методы не следует использовать.

Автор: dorogoyIV 20.5.2007, 00:28
w1nd, если честно- не читал, не было необходимости. спасибо, что подсказали   smile 

Автор: Magistrus 21.5.2007, 09:28
Цитата(COVD @  18.5.2007,  17:25 Найти цитируемый пост)
Таймер - это поток. Его нельзя повторно использовать. Его можно один раз запустить и один раз остановить. После этого надо создать новый таймер. 


Понятно спасибо! Т.е. если у меня таймер является свойством класса, то для того чтобы его вновь запустить надо просто перед добавлением задания добавить строку

Код

 timer = java.util.Timer();


такс, проверим...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)