java quartz 停止_Quartz 定时任务使用 —— 中断正在执行的任务(九)

这篇博客介绍了如何在Java Quartz中停止正在执行的任务。通过实现InterruptableJob接口并覆盖interrupt()方法,配合scheduler的interrupt()方法,可以中断任务执行。文章提供了详细的源码示例,展示了如何创建中断任务并在调度器中执行中断操作。
摘要由CSDN通过智能技术生成

bc7fdfc03a181785f939cc7c3cabcadc.gif

由于业务需要,停止Quartz中正在执行的任务

1、任务类只需要实现InterruptableJob类,然后实现interrupt()方法。

2、在这个方法中进行标记的改变,在执行中进行这个标记判断,就可实现中断任务了

3、另外在调度器上调用方法:sched.interrupt(job.getKey())

源码示例:

job类

package com.anson.examples.example7;

import org.quartz.*;

import java.text.SimpleDateFormat;

import java.util.Date;

/**

* 一个可执行的中断可执行程序,用于单元测试。

*/

public class DumbInterruptableJob implements InterruptableJob {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

private boolean _interrupted = false; // job 是否中断

private JobKey _jobKey = null; // job name

private static int counts = 0; // 中断执行次数

@Override

public void execute(JobExecutionContext context) throws JobExecutionException {

_jobKey = context.getJobDetail().getKey();

System.out.println("【开始执行】任务Key:" + _jobKey + ",执行时间: " + sdf.format(new Date()));

try {

for (int i = 0; i < 4; i++) {

try {

Thread.sleep(1000L);

} catch (Exception e) {

e.printStackTrace();

}

// 查看是否中断

if (_interrupted) {

counts++;

System.out.println("被外界因素停止了这个任务key:" + _jobKey + ",中断累计次数: " + counts + "\n");

return; // 也可以选择抛出一个JobExecutionException,根据业务需要指定行为

}

}

} finally {

System.out.println("【完成任务】key:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值