Выключение планировщика Quartz (true) ждать, пока все потоки, запущенные из запущенных заданий, остановятся?

Если у меня есть задание, и из этого задания я создаю несколько потоков, что происходит, когда я вызываю scheduler.shutdown(true)?

Будет ли планировщик ждать завершения всех моих потоков или нет?


person telebog    schedule 10.01.2011    source источник


Ответы (1)


Quartz 1.8.1 API docs< /а>:

Останавливает запуск триггеров планировщиком и очищает все ресурсы, связанные с планировщиком.

Параметры: waitForJobsToComplete - если true планировщик не позволит этому методу вернуться, пока все текущие выполняемые задания не будут завершены.

Quarts не знает и не заботится ни о каких потоках, порожденных вашим заданием, он просто будет ждать завершения задания. Если ваша работа порождает новые потоки, а затем завершается, то с точки зрения Quartz она завершена.

Если вашему заданию необходимо дождаться завершения своих порожденных потоков, вам нужно использовать что-то вроде ExecutorService (см. javadoc для java.util.concurrent), что позволит потоку задания дождаться завершения своих порожденных потоков. Если вы используете необработанные потоки Java, используйте Thread.join().

person skaffman    schedule 10.01.2011