Czy więcej niż jeden wątek może bezpiecznie nawiązywać połączenia z instancjami o numerze Scheduler zwracanymi przez StdSchedulerFactory jednocześnie?Czy wątki programu planującego kwarc są wątkowane bezpiecznie?
12
A
Odpowiedz
9
Miałem ten problem, więc pomyślałem, że spojrzę na kod źródłowy. Zakładając, że używasz standardowej konfiguracji kwarcu (przechowywanie zadań i wyzwalaczy w pamięci RAM zamiast trwałego JobStore), wydaje się, że kwarc jest bezpieczny dla wątków.
Kopiowanie do źródła, w końcu dostaniesz się do RamJobStore, który przechowuje wszystkie zadania i wyzwalacze w pamięci.
public void storeJobAndTrigger(SchedulingContext ctxt, JobDetail newJob,
Trigger newTrigger) throws JobPersistenceException {
storeJob(ctxt, newJob, false);
storeTrigger(ctxt, newTrigger, false);
}
W każdym z storeJob (..) i storeTrigger (..) metod, istnieją oddzielne zsynchronizowane bloki z własnych unikatowych obiektów do przechowywania pracy i wyzwala w wątku bezpieczny sposób:
synchronized (jobLock) {
if (!repl) {
// get job group
...
}
}
i synchronizacji wyzwalacz:
synchronized (triggerLock) {
...
synchronized (pausedTriggerGroups) {
...
}
}
Więc krótko mówiąc, wydaje się, że można dokonać bezpiecznych połączeń gwintowanych do instancji klasy Scheduler
2
This post na stronie Terracotta to potwierdza.
Powiązane problemy
- 1. W jakim kontekście działa kod programu planującego?
- 2. Czy są to wątki bezpieczne?
- 3. Czy wątki EPiServer są bezpieczne?
- 4. Czy wątki NSIndexPath są bezpieczne?
- 5. Czy wątki SQLite.Net są bezpieczne?
- 6. Czy wątki Keras są bezpieczne?
- 7. Czy wywołania metody Javascript są wątkowane lub synchronizowane?
- 8. Poszukuje zaawansowanego widgetu programu planującego jQuery
- 9. Czy wątki Azure TopicClient są bezpieczne?
- 10. Czy wątki MySQL/JDBC są bezpieczne?
- 11. Czy wątki Gadfly są obecnie kompozycyjne?
- 12. Czy wątki Poco :: Logger są bezpieczne?
- 13. Erlang VM: informacje o czasie pracy programu planującego
- 14. Jaka jest różnica między trybem gotowości programu planującego() a pauseAll()?
- 15. Czy nieresetowalne są "bezpieczne" wątki w C#/.NET?
- 16. Czy ktoś może mi pomóc zrozumieć wątki do mojego programu?
- 17. Podstawowe wątki Java (4 wątki) są wolniejsze niż brak gwintowania.
- 18. Kwarc nie może usunąć pracy, co teraz?
- 19. Czy wątki do ładowania i odczytu funkcji ładowania są bezpieczne?
- 20. Kwarc jednokrotny przy uruchamianiu aplikacji
- 21. Wątki są powolne, gdy dźwięk jest wyłączony
- 22. Czy wątki mają wyraźną kupę?
- 23. Jak ograniczyć zapytania uruchamiane przez kwarc-scheduler
- 24. Kwarc: zapobieganie równoczesnym przypadkom pracy w jobs.xml
- 25. Czy można bezpiecznie używać os.environ.setdefault?
- 26. Zagnieżdżone wątki?
- 27. Wpływ IsBackground na wątki .Net?
- 28. Powiadomienia push systemu iOS nie działają podczas korzystania z programu planującego crontab.
- 29. Czy bezpiecznie jest nadal używać ASIHTTPRequest?
- 30. Jak uruchomić zadanie Windows 2008 z programu planującego za pomocą "interakcji z pulpitem"