• quartz任务执行完之后再执行下一轮任务 避免频率过快并发情况


    原文:https://www.cnblogs.com/eagle-xie/p/8657395.html

    默认情况下,当Job执行时间超过间隔时间时,调度框架为了能让任务按照我们预定的时间间隔执行,会马上启用新的线程执行任务。

    若我们希望当前任务执行完之后再执行下一轮任务,也就是不要并发执行任务,该如何解决呢?

    第一种方法:设置 quartz.threadPool.threadCount 最大线程数为 1。这样到了第二次执行任务时,若当前还没执行完,调度器想新开一个线程执行任务,但我们却设置了最大线程数为 1 个(即:没有足够的线程提供给调度器),则调度器会等待当前任务执行完之后,再立即调度执行下一次任务。(注意:此方法仅适用于Quartz中仅有一个Job,如果有多个Job,会影响其他Job的执行)

    第二种方法:在 Job 类的头部加上 [DisallowConcurrentExecution],表示禁用并发执行。(推荐使用此方法)

    //不允许此 Job 并发执行任务(禁止新开线程执行)
    [DisallowConcurrentExecution]
    public class Job1 : IJob
    {
    }
  • 相关阅读:
    全局变量、函数、文件基本操作、冒泡排序
    元组,字符串,集合,文件操作
    Python使用小技巧
    pycharm
    postman和charles
    将博客搬至CSDN
    垃圾陷阱
    codevs 1139 观光公交
    1159 最大全0子矩阵
    NOI 193棋盘分割.cpp
  • 原文地址:https://www.cnblogs.com/zhang1f/p/13876790.html
Copyright © 2020-2023  润新知