前言
本文将具体分析Quartz是如何调度的,是如何通过数据库的方式来现在分布式调度。
调度线程
Quartz内部提供的调度类是QuartzScheduler,而QuartzScheduler会委托QuartzSchedulerThread去实时调度;当调度完需要去执行job的时候QuartzSchedulerThread并没有直接去执行job,
而是交给ThreadPool去执行job,具体使用什么ThreadPool,初始化多线线程,可以在配置文件中进行配置:

常用的线程池是SimpleThreadPool,这里默认启动了10个线程,在SimpleThreadPool会创建10个WorkerThread,由WorkerThread去执行具体的job;
调度分析
QuartzSchedulerThread是调度的核心类,具体Quartz是如何实现调度的,可以查看QuartzSchedulerThread核心源码:





1.halted和paused
这是两个boolean值的标志参数,分别表示:停止和暂停;halted默认为false,当QuartzSched

本文深入分析了Quartz调度器的工作原理,重点探讨了QuartzSchedulerThread如何进行调度,以及分布式环境下如何通过数据库实现分布式锁保证调度的正确性。文章详细介绍了调度线程的运行机制,包括halted和paused标志、线程池配置、调度线程的选择以及如何避免同一触发器在多个节点上并发执行。此外,还讨论了如何通过Semaphore实现分布式锁,并解释了任务串行执行的机制。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



