quartz框架(十)-QuartzSchedulerThread

本篇博文,博主将介绍QuartzSchedulerThread的相关内容。话不多说,直接进入正题。

从源码和该类的名称上,QuartzSchedulerThread首先是一个线程类,因此它继承了Thread类。从这一点上看,代码的自解释性非常重要。

从quartz框架整体上而言,QuartzSchedulerThread相当于管理者线程,它从JobStore中获取需要触发的任务,交给ThreadPool线程池去分配。接着ThreadPool线程池则会从空闲的工作者线程集合中选取一个工作者线程,把任务分配给该线程执行。

QuartzShedulerThread对象在实例化的时候,此时就处于paused状态(paused为ture)。为什么实例化的时候就处于paused状态呢,因为如果此时没有对应的触发器和Job加入到JobStore的话,QuartzShedulerThread执行主逻辑会占用和消耗资源(比如锁的抢占,无效的查询等)。

那么什么时候QuartzShedulerThread才不处于paused状态呢?我们查看源码可知,在quartzSheduler准备好需要对应的资源后,并且在它的start方法调用的时候,quartzSheduler就会调用QuartzShedulerThread的togglePause方法。不知道细心的小伙伴有没有发现,quartzSheduler的start方法,就是对应设计模式中的外观模式。togglePause逻辑如下:

在quartzScheduler停止的时候会调用quartzSchedulerThread的halt方法,也就是去修改quartzSchedulerThread的循环标志halted为false。halt方法逻辑如下:

run方法是quartzSchedulerThread的主处理逻辑。它的方法逻辑如下:

Original: https://www.cnblogs.com/chenhaoblog/p/16019950.html
Author: 幕友皎敖奔乾
Title: quartz框架(十)-QuartzSchedulerThread

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/580674/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 是否有人会想起

    闲书在手的夏日午后时间顺着页码漫流喧嚣的蝉声乱不了心的静寂湿热的夏风也吹不走淡淡的轻愁 找不回来 弄丢的电台嘈杂声里有时也蕴着期待此刻大把青春无处挥霍的无奈注定有一天追悔莫及 暗自…

    Java 2023年6月5日
    079
  • RabbitMQ 发布订阅-实现延时重试队列

    RabbitMQ消息处理失败,我们会让失败消息进入重试队列等待执行,因为在重试队列距离真正执行还需要定义的时间间隔,因此,我们可以将重试队列设置成延时处理。今天参考网上其他人的实现…

    Java 2023年5月30日
    082
  • 【spring-boot】如何使用apollo

    文章背景 本文介绍如果在spring boot中接入apollo 官方文档:https://github.com/ctripcorp/apollo/wiki#%E4%B8%80%E…

    Java 2023年5月29日
    058
  • 时间操作(Java版)—获取给定日期N天后的日期

    版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/wangshuxuncom/article/details/34896777 获取…

    Java 2023年5月29日
    073
  • Spring Cloud Gateway配置自定义异常返回

    0. 前言 最近搞微服务的全家桶,用到的Spring Cloud Gateway 这个组件。需要对这个网关抛出的异常进行自定义。网关的异常处理跟单体SpringBoot的全局异常处…

    Java 2023年5月30日
    055
  • Kubernetes-Volume

    1. 简介 我们都知道 Container 中的文件在磁盘上是临时存放的,这给 Container 中运行的较重要的应用 程序带来一些问题。 是当容器崩溃时文件丢失。(kubele…

    Java 2023年6月7日
    081
  • 千万不要在方法上打断点!有坑!

    你好呀,我是歪歪。 我上周遇到了一个莫名其妙的搞心态的问题,浪费了我好几个小时。 气死我了,拿这几个小时来敲(摸)代(摸)码(鱼)不香吗? 主要是最后问题的解决方式也让我特别的无语…

    Java 2023年6月5日
    080
  • Java中简单易懂的HashMap面试题(面试必备)

    这篇文章仅限小编个人的理解,小编不是Java方向的,只是对Java有很高的学习兴趣如果有什么不对的地方还望大佬指点 HashMap的底层是数组+链表,(很多人应该都知道了)JDK1…

    Java 2023年5月29日
    061
  • 后台服务端开发人员常用的网络命令

    本文记录后台服务端开发人员常用的网络命令,本文随笔记录,内容较少,随着学习更新,请见谅。 ping – 常用于检测与其他主机是否网络连通 ping,全称 Packet …

    Java 2023年5月30日
    071
  • idea项目运行时报错提示Could not locate executable nullbinwinutils.exe in the Hadoop binaries

    出现这个错误,从网上下载一个名为 winutils.exe 的小插件放到 hadoop/bin目录后,在window中配置hadoop环境,然后重启idea 否则还是会报错 下载地…

    Java 2023年6月9日
    062
  • 如何给spring3 MVC中的Action做JUnit单元测试?

    使用了spring3 MVC后,给action做单元测试也很方便,我以前从来不给action写单元测试的,再在不同了,方便了,所以一定要写。 JUnitActionBase类是所有…

    Java 2023年5月30日
    060
  • Java程序员必备的工具和框架

    最近几年,Java 的技术栈发展的非常快,成百上千的技术工具正不断地涌出来,这也造成了一个问题: 我们作为开发者,到底应该选哪些工具搭建出最合适的技术栈呢? 今天我就推荐一波我常用…

    Java 2023年6月7日
    061
  • 分布式事务篇

    点赞再看,养成习惯,微信搜索「 小大白日志」关注这个搬砖人。 文章不定期同步公众号,还有各种一线大厂面试原题、我的学习系列笔记。 分布式事务的四种处理措施 在分布式系统中实现分布式…

    Java 2023年6月8日
    071
  • Nginx $remote_addr和$proxy_add_x_forwarded_for变量详解

    $remote_addr 代表客户端IP。注意,这里的客户端指的是直接请求Nginx的客户端,非间接请求的客户端。假设用户请求过程如下: 用&#x62…

    Java 2023年6月16日
    070
  • 设计模式—建造者模式

    类型:创建型 目的:创建对象时,提升属性设置的 灵活性。 灵活性 类中定义了大量属性时,通常为了创建对象时属性初始设置的便利随之定义大量的构造方法。为了既不定义过多的构造方法,又保…

    Java 2023年6月7日
    068
  • Docker 常用操作

    .Docker的基本操作 1.镜像操作 1.1.镜像名称 首先来看下镜像的名称组成: 镜名称一般分两部分组成:[repository]:[tag]。 在没有指定tag时,默认是la…

    Java 2023年6月7日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球