Quartz使用一

最近有用到quartz,附上代码使用,以免下次忘记<备注:代码也是摘抄某博主的>:

 

 

package cn.com.test;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

import static org.quartz.SimpleScheduleBuilder.simpleSchedule;

public class QuartzTest {
@Autowired
private SchedulerFactoryBean schedulerFactoryBean;
public static void test_1(){
try {
//从调度程序工厂获取一个调度程序的实例
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//显示调度程序的名称(这里会展示我们在quartz.properties文件中的名称)
System.out.println("scheduleName = " + scheduler.getSchedulerName());
/**
* 重要:
* 定义一个job,并绑定到我们自定义的HelloJob的class对象
* 这里并不会马上创建一个HelloJob实例,实例创建是在scheduler安排任务触发执行时创建的
* 这种机制也为后面使用Spring集成提供了便利
*/
JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1").build();

//声明一个触发器,现在就执行(schedule.start()方法开始调用的时候执行);并且每间隔2秒就执行一次
Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("trigger1", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(2)
.repeatForever())
.build();
// TriggerBuilder.newTrigger().withIdentity("TaskDeadlock", BasisConstants.SYSTEM_TASK_GROUP).withSchedule(scheduleBuilder).build();
// 告诉quartz使用定义的触发器trigger安排执行任务job
scheduler.scheduleJob(job, trigger);
//启动任务调度程序,内部机制是线程的启动
scheduler.start();
//关闭任务调度程序,如果不关闭,调度程序schedule会一直运行着
//scheduler.shutdown();
} catch (SchedulerException e) {
e.printStackTrace();
}
}

public void test_2(){
try {
//1.调度实例scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// Scheduler scheduler = schedulerFactoryBean.getScheduler();//获得一个调度器
// System.out.println("scheduleName = " + scheduler.getSchedulerName());
//2.JobDetail 实例--->TaskDeadlockRunImpl.class是执行的某个方法里面的execute()方法
            JobDetail job =JobBuilder.newJob(TaskDeadlockRunImpl.class).withIdentity("1_0", BasisConstants.CHILD_TASK_RUN).build();
//3.触发器trigger
Trigger trigger =TriggerBuilder.newTrigger().withIdentity("1_0", BasisConstants.CHILD_TASK_RUN).withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();
scheduler.scheduleJob(job, trigger);
System.out.println("scheduler.start");
// scheduler.start();
System.out.println("scheduler.end");
} catch (SchedulerException e) {
e.printStackTrace();
}

}
public static void main(String[] args) {
test_1();
/*QuartzTest t = new QuartzTest();
t.test_2();*/
}
}

posted on   companion  阅读(220)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示