Quartz线程阻塞:修改调度器Quartz的线程池参数,不使用默认设置

还是之前那项目,重启以后,自动任务的确启了,但是今天傍晚到点,该自动任务又没启。联系了特色查看访问情况,发现该自动任务并不是按点的,有时候会提前访问特色,有时候会晚些访问特色,说明一个情况,该自动任务不是没启,而是被阻塞了。

我们都知道,使用调度器Quartz时,当我们开的定时任务比较多,就会出现一些定时任务不会被触发的现象或是延后触发的情况,这就是线程阻塞。

Quartz线程阻塞:修改调度器Quartz的线程池参数,不使用默认设置

由于该项目没有配置Quartz的线程池,使用Quartz调取器默认的配置参数,所以情况可能就是:当正在执行的调度任务个数超过了调度器中默认设置的最大值时,就会出线程阻塞,调度任务延迟执行的现象。

Quartz调取器默认的参数如下:

Quartz线程阻塞:修改调度器Quartz的线程池参数,不使用默认设置

可以看出,默认线程池里的线程数,默认值是10,10实在太小,当并发执行多个耗时任务时,就会造成阻塞。我们在项目中新建一个名为quartz.properties的配置文件,复制默认的配置,然后修改线程池数量为100:

org.quartz.threadPool.threadCount = 100

只需要增加该配置文件即可,因为quartz调度器在初始化的时候,首先判断是否有quartz.properties,有的话,就用我们当前配置文件中的参数,否则就从jar包里加载quartz.properties进行默认的初始化。