È possibile che più di un thread chiami i metodi in modo sicuro su un'istanza di Scheduler restituita dallo StdSchedulerFactory contemporaneamente?Le istanze del programma di pianificazione Quartz sono sicure?
risposta
Ho avuto questo problema, quindi ho pensato di dare un'occhiata al codice sorgente. Supponendo che si stia utilizzando una configurazione standard di Quartz (memorizzazione di processi e trigger nella RAM invece di un JobStore persistente), allora sembra che Quartz sia sicuro per i thread.
Scavando nel sorgente, si arriva infine al RamJobStore, che memorizza tutti i lavori e i trigger in memoria.
public void storeJobAndTrigger(SchedulingContext ctxt, JobDetail newJob,
Trigger newTrigger) throws JobPersistenceException {
storeJob(ctxt, newJob, false);
storeTrigger(ctxt, newTrigger, false);
}
In ciascuno degli storeJob (..) e storeTrigger (..) metodi sono disponibili blocchi sincronizzati separate con i propri oggetti unici per la memorizzazione dei lavori e innesca in un thread modo sicuro:
synchronized (jobLock) {
if (!repl) {
// get job group
...
}
}
e sincronizzare un trigger:
synchronized (triggerLock) {
...
synchronized (pausedTriggerGroups) {
...
}
}
Così, in breve, sembrerebbe che è possibile effettuare chiamate sicure filo a un'istanza della classe Scheduler
This post sul sito Web di Terracotta lo conferma.
- 1. Le sequenze di routine LAPACK sono sicure?
- 2. Le funzioni membro del thread std :: wstring_convert sono sicure?
- 3. Quanto sono sicure le sessioni PHP?
- 4. Le query multilinea sql-injection sono sicure?
- 5. Libreria di pianificazione in C++ simile a Java Quartz
- 6. Le istanze di Django Model sono lavabili?
- 7. Quanto sono sicure le variabili di sessione PHP?
- 8. Le scritture asincrone su un thread socket sono sicure?
- 9. Pianificazione del viaggio
- 10. Le tabelle temporanee in SQL Server multiutente sono sicure?
- 11. ffmpeg: quali funzioni sono multithreading sicure?
- 12. Le istanze di Google Container Engine sono accessibili tramite DNS?
- 13. Quartz in Webapplication
- 14. Come evitare più istanze di un programma?
- 15. Che cosa sono esattamente le istanze di Windows Azure?
- 16. Perché le istanze di `java.time.ZoneOffset` sono ordinate 'all'indietro'?
- 17. Alternative al quarzo per la pianificazione del lavoro
- 18. Best practice per le API sicure?
- 19. Perché le istanze di Metaclass sono Metaclass e non Class?
- 20. C# Tutte le istanze di pipe sono occupate
- 21. Applicazioni iOS sicure con cycript
- 22. Perché le "Parole programma" sono due parole?
- 23. Come testare un programma di pianificazione in php
- 24. Pianificazione di un concorso
- 25. Quanto sono stabili più istanze di R quando una istanza esegue un programma esterno?
- 26. Come posso decifrare le variabili env sicure?
- 27. Radici quadrate sicure per le unità
- 28. Quanti core del processore supporta il programma di utilità di pianificazione .NET
- 29. Quali sono alcuni fantastici tutorial di disegno in Quartz 2D?
- 30. Algoritmo di pianificazione