Мне нужно запланировать задачу с помощью java в веб-приложении. Что более важно, так это возможность приостановить и возобновить расписание. Я знаю, что есть TimerTask и Timer, но не уверен, что у них есть эта опция паузы. есть время отладить этот фрагмент кода. Может ли кто-нибудь указать пример, в котором задача может быть запланирована, приостановлена и возобновлена?
Запланировать задачу с помощью java
comment
Есть ли в вашем коде компонент Spring? Потому что spring предоставляет действительно хорошую и простую в реализации оболочку задачи таймера.
- person Pushkar   schedule 23.03.2011
comment
к сожалению, это Struts 1 :(
- person Harish   schedule 23.03.2011
Ответы (3)
Я знаю, что у вас были проблемы с Qartz
, но, пожалуйста, взгляните еще раз и просмотрите CronTrigger. И в качестве примера на pausing a task
посмотрите на этот ответ: Quartz Java возобновляет работу много раз
person
anubhava
schedule
23.03.2011
Проблема с Quartz в том, что он не приостанавливается и не возобновляется.
- person Harish; 23.03.2011
Взгляните на связанный ответ для приостановки CronTrigger.
- person anubhava; 23.03.2011
Вы пробовали простой поток, для которого установлен логический флаг, чтобы приостановить его?
Лично я бы использовал ScheduledExecutorService с флагом.
person
Peter Lawrey
schedule
23.03.2011
Мне очень жаль, что у меня очень мало времени. Примеры есть. Я слишком много знаю, чтобы быть жадным, но моя ситуация требует этого. Приношу свои извинения.
- person Harish; 23.03.2011
По сути, задача - это ваш код. Так что, пока ваш код не предоставит возможности для приостановки, другие фреймворки не могут действительно помочь. Самый простой способ сделать паузу - это открыть общедоступный метод, который просто вызывает сон в вашем потоке. Теперь фреймворк может вызвать ваш общедоступный метод, чтобы приостановить (засыпать) ваш поток.
person
Suraj Chandran
schedule
23.03.2011
Вы не можете вызвать сон на другом thrad.
- person Michael Borgwardt; 23.03.2011
точно !! вот почему я сказал, что вам нужно будет предоставить в своей задаче метод, который будет засыпать текущий поток :)
- person Suraj Chandran; 23.03.2011
За исключением того, что текущий поток будет тем, который вызывает метод, то есть фреймворк. Единственное, что работает, - это иметь метод, который устанавливает флаг, который поток задачи периодически проверяет. И тогда ему пришлось бы вызывать ожидание, а не спать, чтобы его тоже можно было разбудить.
- person Michael Borgwardt; 23.03.2011
@ Майкл, правда, на самом деле это была идея ... я думаю, мне нужно немного отдохнуть
- person Suraj Chandran; 23.03.2011