多個線程可以同時安全地調用由StdSchedulerFactory返回的實例Scheduler上的方法嗎?Quartz調度器實例是否線程安全?
12
A
回答
9
我有這個問題,所以認爲我會看看源代碼。假設你使用Quartz的標準配置(在RAM中存儲作業和觸發器而不是持久的JobStore),那麼看起來Quartz是線程安全的。
挖掘源代碼,您將最終到達RamJobStore,它將所有作業和觸發器存儲在內存中。
public void storeJobAndTrigger(SchedulingContext ctxt, JobDetail newJob,
Trigger newTrigger) throws JobPersistenceException {
storeJob(ctxt, newJob, false);
storeTrigger(ctxt, newTrigger, false);
}
在每個storeJob(..)和storeTrigger(..)的方法,存在與自己的獨特的對象單獨同步塊用於存儲作業和在一個線程安全的方式觸發:
synchronized (jobLock) {
if (!repl) {
// get job group
...
}
}
和同步觸發:
synchronized (triggerLock) {
...
synchronized (pausedTriggerGroups) {
...
}
}
因此,在短期,它會出現,你可以使線程安全調用調度類
0123的實例
2
This post在Terracotta網站上確認。
相關問題
- 1. Quartz Job listeners線程安全
- 2. 多線程實例訪問時是否是線程池線程安全?
- 3. 這個單例實例成員是否線程安全?
- 4. hiperfifo.c示例線程是否安全
- 5. Quartz調度和線程池
- 6. 在非事件調度線程中調用fireTableRowsUpdated()是否安全?
- 7. Sqlite數據庫實例是否線程安全
- 8. 在後臺線程上實例化UI對象是否安全?
- 9. ValueStack容器是否線程安全?
- 10. 是否Box.add()線程安全?
- 11. 是否mysql_insert_id線程安全?
- 12. NashornScriptEngine是否線程安全?
- 13. RegExp.MatchString是否線程安全?
- 14. SeekableStream是否線程安全?
- 15. 是否log4j線程安全?
- 16. NSPasteboard是否線程安全?
- 17. LIBSVM是否安全線程
- 18. epoll是否線程安全?
- 19. 是否NotifyPropertyChanged線程安全?
- 20. 線程是否表示線程安全?
- 21. 線程安全的實例字段
- 22. NSManagedObject實例的線程安全性?
- 23. 靜態實例線程安全
- 24. 的Java:線程安全類的實例
- 25. File實例線程安全嗎?
- 26. 線程安全:類的實例
- 27. 部分線程安全是否使Java類線程安全?
- 28. Quartz 2.0調度程序例外
- 29. Quartz調度最大線程數屬性
- 30. Quartz調度程序可以實現嗎?