Запланировать задачу с помощью java

Мне нужно запланировать задачу с помощью java в веб-приложении. Что более важно, так это возможность приостановить и возобновить расписание. Я знаю, что есть TimerTask и Timer, но не уверен, что у них есть эта опция паузы. есть время отладить этот фрагмент кода. Может ли кто-нибудь указать пример, в котором задача может быть запланирована, приостановлена ​​и возобновлена?


person Harish    schedule 23.03.2011    source источник
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
comment
Проблема с Quartz в том, что он не приостанавливается и не возобновляется. - person Harish; 23.03.2011
comment
Взгляните на связанный ответ для приостановки CronTrigger. - person anubhava; 23.03.2011

Вы пробовали простой поток, для которого установлен логический флаг, чтобы приостановить его?

Лично я бы использовал ScheduledExecutorService с флагом.

person Peter Lawrey    schedule 23.03.2011
comment
Мне очень жаль, что у меня очень мало времени. Примеры есть. Я слишком много знаю, чтобы быть жадным, но моя ситуация требует этого. Приношу свои извинения. - person Harish; 23.03.2011

По сути, задача - это ваш код. Так что, пока ваш код не предоставит возможности для приостановки, другие фреймворки не могут действительно помочь. Самый простой способ сделать паузу - это открыть общедоступный метод, который просто вызывает сон в вашем потоке. Теперь фреймворк может вызвать ваш общедоступный метод, чтобы приостановить (засыпать) ваш поток.

person Suraj Chandran    schedule 23.03.2011
comment
Вы не можете вызвать сон на другом thrad. - person Michael Borgwardt; 23.03.2011
comment
точно !! вот почему я сказал, что вам нужно будет предоставить в своей задаче метод, который будет засыпать текущий поток :) - person Suraj Chandran; 23.03.2011
comment
За исключением того, что текущий поток будет тем, который вызывает метод, то есть фреймворк. Единственное, что работает, - это иметь метод, который устанавливает флаг, который поток задачи периодически проверяет. И тогда ему пришлось бы вызывать ожидание, а не спать, чтобы его тоже можно было разбудить. - person Michael Borgwardt; 23.03.2011
comment
@ Майкл, правда, на самом деле это была идея ... я думаю, мне нужно немного отдохнуть - person Suraj Chandran; 23.03.2011