Java定时任务取消的示例代码

 更新时间:2024年02月17日 09:52:38   作者:阿寻寻  
java定时任务如何取消,并比如,我之前想每周二晚上6点自动生成一条devops流水线,现在我想停掉,下面给大家分享java定时任务取消的示例代码,演示如何创建一个每周二晚上6点自动生成一条devops流水线的定时任务,感兴趣的朋友一起看看吧

java定时任务如何取消,并比如,我之前想每周二晚上6点自动生成一条devops流水线,现在我想停掉

答案: 在Java中,可以使用ScheduledExecutorService类来创建定时任务。要取消定时任务,可以调用ScheduledFuture对象的cancel()方法。

以下是一个示例代码,演示如何创建一个每周二晚上6点自动生成一条devops流水线的定时任务,并在需要时取消它:

import java.util.Calendar;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
public class Main {
    public static void main(String[] args) {
        // 创建一个ScheduledExecutorService对象
        ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
        // 获取当前时间
        Calendar now = Calendar.getInstance();
        // 计算下一个周二晚上6点的时间
        Calendar nextExecutionTime = getNextExecutionTime(now);
        // 计算当前时间到下一个执行时间的时间间隔
        long initialDelay = nextExecutionTime.getTimeInMillis() - now.getTimeInMillis();
        // 创建定时任务
        ScheduledFuture<?> future = executor.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                // 自动生成devops流水线的代码
                System.out.println("Generating devops pipeline...");
            }
        }, initialDelay, 7 * 24 * 60 * 60 * 1000, TimeUnit.MILLISECONDS);
        // 在需要时取消定时任务
        // future.cancel(true);
        // 关闭ScheduledExecutorService
        // executor.shutdown();
    }
    private static Calendar getNextExecutionTime(Calendar now) {
        Calendar nextExecutionTime = (Calendar) now.clone();
        nextExecutionTime.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
        nextExecutionTime.set(Calendar.HOUR_OF_DAY, 18);
        nextExecutionTime.set(Calendar.MINUTE, 0);
        nextExecutionTime.set(Calendar.SECOND, 0);
        nextExecutionTime.set(Calendar.MILLISECOND, 0);
        if (nextExecutionTime.before(now)) {
            nextExecutionTime.add(Calendar.WEEK_OF_YEAR, 1);
        }
        return nextExecutionTime;
    }
}

在上述代码中,我们使用ScheduledExecutorServicescheduleAtFixedRate()方法创建了一个定时任务,该任务会在每周二晚上6点自动生成一条devops流水线。initialDelay参数表示当前时间到下一个执行时间的时间间隔,7 * 24 * 60 * 60 * 1000参数表示每隔7天执行一次。

要取消定时任务,可以调用future.cancel(true)方法。取消后,定时任务将不再执行。

请注意,上述代码中的取消和关闭操作是注释掉的。如果要取消定时任务,可以取消注释future.cancel(true);如果要关闭ScheduledExecutorService,可以取消注释executor.shutdown()

到此这篇关于Java定时任务取消的示例代码的文章就介绍到这了,更多相关java定时任务取消内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中Static关键字的五种用法详解

    Java中Static关键字的五种用法详解

    这篇文章主要介绍了Java中static的五种用法:修饰成员变量,修饰成员方法,修饰内部类,静态代码块,静态导包,想详细了解的小伙伴可以参考阅读本文
    2023-03-03
  • Java反射如何有效的修改final属性值详解

    Java反射如何有效的修改final属性值详解

    最近在工作中遇到一个需求,要利用反射对修饰符为final的成员变量进行修改,所以这篇文章主要给大家介绍了关于Java反射如何有效的修改final属性值的相关资料,文中通过示例代码介绍的非常详细,对需要的朋友可以参考下。
    2017-08-08
  • maven中仓库的配置与优先级的实现

    maven中仓库的配置与优先级的实现

    本文介绍Maven仓库配置,包括settings.xml和pom.xml中的本地仓库、镜像及profile设置,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • SpringBoot分布式WebSocket的实现指南

    SpringBoot分布式WebSocket的实现指南

    在现代Web应用中,实时通信已成为基本需求,而WebSocket是实现这一功能的核心技术,本文将详细介绍如何在Spring Boot项目中实现分布式WebSocket,包括完整的技术方案、实现步骤和核心代码,需要的朋友可以参考下
    2025-10-10
  • Java位集合之BitMap实现和应用详解

    Java位集合之BitMap实现和应用详解

    这篇文章主要介绍了Java位集合之BitMap实现和应用的相关资料,BitMap是一种高效的数据结构,适用于快速排序、去重和查找等操作,通过简单的数组和位运算,可以在Java中实现BitMap,从而节省存储空间并提高性能,需要的朋友可以参考下
    2024-12-12
  • spring boot如何使用spring AOP实现拦截器

    spring boot如何使用spring AOP实现拦截器

    本篇文章主要介绍了spring boot如何使用spring AOP实现拦截器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • java中PriorityBlockingQueue的入队知识点总结

    java中PriorityBlockingQueue的入队知识点总结

    在本篇文章里小编给大家整理一篇关于java中PriorityBlockingQueue的入队知识点总结内容,有需要的朋友们可以学习下。
    2021-01-01
  • SpringBoot 接口防护(防重提交 + 限流)

    SpringBoot 接口防护(防重提交 + 限流)

    Guardian 是一个轻量级 Spring Boot API 请求层防护框架,提供防重复提交和接口限流两大能力,本文就来详细的介绍一下SpringBoot 接口防护(防重提交 + 限流),感兴趣的可以了解一下
    2026-03-03
  • java项目新建遇到的两个问题解决

    java项目新建遇到的两个问题解决

    创建一个新的Java项目可以通过多种方式进行,包括使用集成开发环境(IDE)或手动创建,下面这篇文章主要给大家介绍了关于java项目新建遇到的两个问题,需要的朋友可以参考下
    2024-06-06
  • MyBatis中的@SelectProvider注解源码分析

    MyBatis中的@SelectProvider注解源码分析

    这篇文章主要介绍了MyBatis中的@SelectProvider注解源码分析,@SelectProvider功能就是用来单独写一个class类与方法,用来提供一些xml或者注解中不好写的sql,今天就来说下这个注解的具体用法与源码,需要的朋友可以参考下
    2024-01-01

最新评论