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)

大家都在看

  • List的同步类比较

    TL;NRs CopyOnWriteArrayList类在多线程顺序读取上有很大的优势,但在随机读取上反而有较大的劣势,且在写入方面性能极差。 Vector类在顺序读取方面性能较差…

    Java 2023年6月9日
    079
  • Spring Tool Suite 4 Install Wizard Template (To Support Dynamic Web Project )

    Latest Eclipse Release – https://download.eclipse.org/releases/latest Web, XML, Java…

    Java 2023年5月30日
    080
  • this.$refs[formName].validate((valid) =>{} 无效,vue验证表单无效

    问题: this.$refs[formName].validate((valid) =>{}无效的问题,当验证通过的时候点确定按钮没有报错,也没有任何反应。 背景: ruoy…

    Java 2023年6月14日
    049
  • 安装java jdk和eclipse和andorid环境

    目的是构建一个以eclipse为主体,可以创建java的windows窗口程序,android程序的开发环境。 1、下载jdk-18,目前最新版本。https://www.orac…

    Java 2023年5月29日
    068
  • 主流前沿的开源监控和报警系统Prometheus+Grafana入门之旅

    @ Prometheus概述 定义 特性 组件 架构 优势 对运维要求 数据模型(DATA MODEL) 工作和实例(JOBS AND INSTANCES) 指标度量(metric…

    Java 2023年6月5日
    0119
  • JavaSE_关键字 接口 代码块 枚举

    1 Java中的关键字 1.1 static关键字 static特点 : 静态成员被所在类的所有对象共享 随着类的加载而加载 , 优先于对象存在 可以通过对象调用 , 也可以通过类…

    Java 2023年6月9日
    082
  • 一些自用的可能用到的网站资料

    maven的卸载、重新安装与配置:https://www.cnblogs.com/helong-123/p/15903756.html posted @2022-04-06 14:…

    Java 2023年6月5日
    091
  • 关于飞书事件订阅功能的应用

    此项目源码我也是站在巨人的肩膀上进行一个二次应用,感谢这位大神的共享 附上源码链接–Feishu-Event-Subscribe: 【实验】飞书的事件订阅 主要是通讯录…

    Java 2023年6月15日
    074
  • 回显服务端/client

    回显服务端/client 在这一章。我们将会实现一个小的client/服务端应用。这可能会是你写过的最简单的client/服务端应用。回显应用就是一个把client发过来的不论什么…

    Java 2023年5月30日
    067
  • 01-Spring Security框架学习–入门(二)

    一、入门案例 Spring Security 自定义登录界面 通过之前的一节 01-Spring Security框架学习–入门(一)的简单演示,Spring secu…

    Java 2023年6月10日
    084
  • 游戏协议安全测试

    测试人员通过第三方工具篡改游戏客户端发送给服务器的协议,达到测试服务器逻辑、挖掘游戏漏洞的一种测试行为,称之为游戏协议安全测试。 协议测试的作用是测试服务器逻辑的漏洞,避免游戏上线…

    Java 2023年6月5日
    0130
  • Mybatis 分批次新增插入数据

    public void insertSelective(List ssoNews) { //限制条数 int pointsD…

    Java 2023年6月13日
    083
  • Java 基础(Stream APl) 二

    Stream的终止操作 终端操作会从流的流水线生成结果。其结果可以是任何不是流的值,例如: List、Integer、甚至是 void。 流进行了终止操作后,不能再次使用。 方法 …

    Java 2023年5月29日
    0163
  • Redis缓存相关的几个问题

    1 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来…

    Java 2023年6月7日
    074
  • 【RocketMQ】Broker服务注册

    Broker注册 在Broker的启动函数中,添加了定时向NameServer进行注册的任务,在启动后延迟10秒向NameServer进行注册,之后定时发送心跳包,关于发送周期,首…

    Java 2023年6月8日
    063
  • Go学习第一天:有关环境变量及结构的解释

    环境变量 有三个变量 GOPATH、 PATH、 GOROOT: GOROOT 就是 go 的安装路径; GOPATH 就是go的项目目录; PATH是go安装路径下的bin目录。…

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