SchedulerFactory在创建quartzScheduler的过程中,将会读取配置参数,初始化各个组件。

1.启动流程图

  quratz启动流程-LMLPHP

2.ThreadPool

  一般是使用SimpleThreadPool,SimpleThreadPool创建了一定数量的WorkerThread实例来使得Job能够在线程中进行处理。

  WorkerThread是定义在SimpleThreadPool类中的内部类,它实质上就是一个线程。

  在SimpleThreadPool中有三个list:workers-存放池中所有的线程引用,availWorkers-存放所有空闲的线程,busyWorkers-存放所有工作中的线程;
  线程池的配置参数如下所示:

org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool 
org.quartz.threadPool.threadCount=3
org.quartz.threadPool.threadPriority=5

  ThreadPool.java

 quratz启动流程-LMLPHP

  代码:

 public SimpleThreadPool(int threadCount, int threadPriority) {
setThreadCount(threadCount);
setThreadPriority(threadPriority);
}

3.JobStore

  分为存储在内存的RAMJobStore和存储在数据库的JobStoreSupport(包括JobStoreTX和JobStoreCMT两种实现,JobStoreCMT是依赖于容器来进行事务的管理,而JobStoreTX是自己管理事务)。

  若要使用集群要使用JobStoreSupport的方式。

  quratz启动流程-LMLPHP

4.QuratzSchedulerThread

  用来进行任务调度的线程,在初始化的时候paused=true,halted=false,虽然线程开始运行了,但是paused=true,线程会一直等待,直到start方法将paused置为false;

05-22 02:11