2010-08-24 20 views
6

Sto cercando di trovare il modo migliore per implementare un timeout con il quarzo, ma voglio sapere se questo framework contiene già una classe o un'interfaccia per farlo. Il timeout che è necessario implementare è perché voglio sapere per quanto tempo è stato lavorare il lavoro, e prendere la decisione di spegnere il lavoro.Come implementare il timeout con Quartz?

+0

Prova ancora il parametro endTime? http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson05.html – Sean

+0

ciao, e grazie per avermelo chiesto, io davvero non l'ho usato perché penso che questo parametro sia solo per finire un lavoro in un determinato momento. E voglio sapere per quanto tempo il lavoro ha fatto l'operazione per evitare un ciclo infinito – Jorge

+0

Ok, quindi stai cercando un modo per tenere traccia del tempo di attività dello scheduler più di un timeout. Prova a guardare la documentazione per gli ascoltatori. Non li ho usati, ma sembrerebbe la scelta logica per monitorare lo stato/tempo di esecuzione dell'applicazione. – Sean

risposta

8

Poiché la piattaforma java non fornisce alcun modo per interrompere un thread, Quartz non fornisce alcun modo per interrompere un processo in esecuzione su un thread.

I lavori devono prendersi cura di se stessi, poiché Quartz non ha idea di quale codice sia nel loro metodo execute().

Si consiglia di utilizzare System.currentTimeMillis() all'inizio del processo execute() metodo per registrare l'ora corrente e quindi ogni volta attraverso il ciclo principale del lavoro, utilizzarlo nuovamente per ottenere l'ora corrente. Guarda la differenza per vedere se il tuo tempo massimo è passato, e se è così uscire dal tuo ciclo principale e uscire dal metodo execute().

+1

Vedere anche l'interfaccia InterruptableJob. E l'interfaccia JobListener, che ti dà gli strumenti per aggiungere alcune caratteristiche semplici al framework che soddisfano le tue esigenze. – jhouse