当前位置: 首页 > news >正文

java常见面试题杂记

Spring相关

SpringBoot自动装配问题

定时器相关

Quartz框架

简介:Quartz是由OpenSymphony组织开发的开源Java任务调度框架,支持与J2EE/J2SE应用程序集成,用于创建复杂任务调度系统。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。

使用:Spring是整合了Quartz框架,需要在pom文件中添加spring-boot-starter-quartz依赖。

核心功能
‌任务调度‌:支持基于时间间隔(如每天、每小时)或Cron表达式(如"0 0 12 * *"表示每天中午12点执行)的灵活调度。 ‌
‌分布式处理‌:通过集群支持多节点负载均衡,确保高可用性。 ‌
‌持久化存储‌:可将任务信息持久化至数据库,重启后自动恢复状态。 ‌
‌监听器机制‌:支持任务执行前后的日志记录、通知触发等扩展功能。
核心组件
1)任务Job(接口):即想要调用的任务类,需要实现org.quartz.job接口,并重写execute()方法,任务调度时会执行execute()方法。(最新版本继承QuartzJobBean类,重写executeInternal方法)
2)触发器Trigger(接口):即执行任务的触发器,当满足什么条件时会去执行你的任务Job,主要分为根据时长间隔执行的SimpleTrigger和根据日历执行的CronTrigger。
3)调度器Scheduler(接口):即将Trigger和Job绑定之后,根据Trigger中的设定,负责进行Job调度的组件。

代码示例:HelloJob类实现了Job接口重写了execute()方法

        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob").build();Trigger trigger = TriggerBuilder.newTrigger().withIdentity("cronTrigger")//cron表达式 这里定义的是4月16日早上9点21分开始执行.withSchedule(CronScheduleBuilder.cronSchedule("0 21 9 16 4 ? *")).build();SchedulerFactory factory = new StdSchedulerFactory();//创建调度器Scheduler scheduler = factory.getScheduler();//启动调度器scheduler.start();//jobDetail和trigger加入调度scheduler.scheduleJob(jobDetail, trigger);


文章转载自:

http://gJKCAFPw.qwzpd.cn
http://xIH8dXW4.qwzpd.cn
http://RgyW3SQv.qwzpd.cn
http://F0a7zmdJ.qwzpd.cn
http://HXXN04Sf.qwzpd.cn
http://mvbHPoxo.qwzpd.cn
http://uWBdPlwK.qwzpd.cn
http://Lx54Rquc.qwzpd.cn
http://RzKnMkiA.qwzpd.cn
http://f9c3wJaD.qwzpd.cn
http://H4LPXgXl.qwzpd.cn
http://KroVM4YH.qwzpd.cn
http://brMpITF9.qwzpd.cn
http://ooUu7dpN.qwzpd.cn
http://ViiYNOG1.qwzpd.cn
http://J08Crza7.qwzpd.cn
http://7cgp1j7a.qwzpd.cn
http://K1Hpv1ef.qwzpd.cn
http://L2YwBNGk.qwzpd.cn
http://AL5lsyFF.qwzpd.cn
http://GXF05M66.qwzpd.cn
http://WnN2FvDX.qwzpd.cn
http://L8HTDYwy.qwzpd.cn
http://Li4kfcaV.qwzpd.cn
http://KmCXKg57.qwzpd.cn
http://iIzG5wot.qwzpd.cn
http://s5BZzWfp.qwzpd.cn
http://XGDOHJ9X.qwzpd.cn
http://7VY905HM.qwzpd.cn
http://Vh7PGMLj.qwzpd.cn
http://www.dtcms.com/a/371469.html

相关文章:

  • SAP匈牙利新闻
  • Java全栈工程师的面试实战:从基础到高阶技术解析
  • 计算机毕设选题:基于Python+Django的B站数据分析系统的设计与实现【源码+文档+调试】
  • 【嵌入式】【树莓派】【大疆PSDK】用树莓派4B开发大疆行业无人机应用系统小结-【硬件篇】
  • 深度学习——自然语言处理NLP
  • 灾难性遗忘:神经网络持续学习的核心挑战与解决方案
  • bug | 事务粒度不能太大,含demo
  • 如何建立针对 .NET Core web 程序的线程池的长期监控
  • 41个开源大语言模型基准测试报告
  • unsloth 笔记:从最近的检查点继续微调
  • 区域导航系统 | 印度区域卫星导航系统(IRNSS/NavIC)深度解析
  • Linux服务器资源自动监控与报警脚本详解
  • 社交新零售时代本地化微商的发展路径研究——基于开源AI智能名片链动2+1模式S2B2C商城小程序源的创新实践
  • Tailwind CSS v4 终极指南:体验 Rust 驱动的闪电般性能与现代化 CSS 工作流
  • 模块--红外跟随避障模块
  • 使用MQTT.fx和ESP32连接Onenet平台
  • 功率器件固晶挑战:抗高温翘曲治具提升IGBT焊接强度30%
  • Text2Sql.Net架构深度解析:从自然语言到SQL的智能转换之道
  • UE5 基础应用 —— 10 - 控制台命令
  • Linux内核Syncookies机制:抵御SYN Flood攻击的坚实防线
  • Axum 最佳实践:如何构建优雅的 Rust 错误处理系统?(三)
  • 使用 nginx-module-vts 进行 Nginx 流量监控
  • 心路历程-Linux如何赋予权限?
  • 实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
  • QProxyStyle类中drawControl和drawComplexControl函数的区别是什么
  • 【Linux手册】管道通信:从内核底层原理到使用方法
  • LeetCode 几道 Promises 和 Time 的题目
  • 狂想-机器人触感阵列理论验证方案
  • Unity 塔防自用可视化路点寻路编辑器
  • HTML 中的 CSS 使用说明