Java实现Timer的定时调度函数schedule的四种用法

一、背景介绍

Java中提供了一个Timer类,是一种比较简单的定时器实现,比如我们可以基于这个类实现类似于 Linux 中 Cron 一样定时执行某些任务的功能。其中,定时调度函数 schedule 是 Timer 类最常用的方法之一,他用于安排指定的任务在指定的时间点或者经过指定的延迟后执行一次。这个函数有 4 种用法,下面将详细讲解。

二、使用方法

  1. schedule(TimerTask task,Date time)

这种用法表示在指定时间执行一次任务。其中,参数 task 表示要执行的任务,可以是 TimerTask 的子类;参数 time 表示任务执行的时间,是一个 Date 类型的对象。

import java.util.Timer;
import java.util.TimerTask;

public class ScheduleTaskDEMO01 {
    public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("Task executed at " + new Date());
            }
        },new Date( System.currentTimeMillis() + 5000));
    }
}

以上代码实现了在系统当前时间5秒之后执行一次任务的功能。

  1. schedule(TimerTask task,long delay)

这种用法表示延迟指定时间后执行一次任务。其中,参数 task 表示要执行的任务,可以是 TimerTask 的子类;参数 delay 表示延迟执行任务的时间,是一个 long 类型的值,单位是毫秒。

import java.util.Timer;
import java.util.TimerTask;

public class ScheduleTaskDEMO02 {
    public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new TimerTask(){
            @Override
            public void run() {
                System.out.println("Task executed after 2 seconds.");
            }
        }, 2000L);
    }
}

以上代码实现了在执行任务前延迟 2 秒的功能。

  1. schedule(TimerTask task,Date firstTime,long period)

这种用法表示在指定时间开始,周期性地执行任务。其中,参数 task 表示要执行的任务,可以是 TimerTask 的子类;参数 firstTime 表示首次执行任务的时间,是一个 Date 类型的对象;参数 period 表示每个执行周期的间隔时间,是一个 long 类型的值,单位是毫秒。

import java.util.Timer;
import java.util.TimerTask;

public class ScheduleTaskDEMO03 {
    public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new TimerTask(){
            int count = 0;
            @Override
            public void run() {
                System.out.println("Task executed " + ++count + " times at " + new Date());
            }
        }, new Date(System.currentTimeMillis() + 3000L), 2000L);
    }
}

以上代码实现了在指定时间(当前时间后 3 秒)开始,每隔 2 秒执行一次任务的功能。

  1. schedule(TimerTask task,long delay,long period)

这种用法表示延迟指定时间后开始周期性地执行任务。其中,参数 task 表示要执行的任务,可以是 TimerTask 的子类;参数 delay 表示延迟执行任务的时间,是一个 long 类型的值,单位是毫秒;参数 period 表示每个执行周期的间隔时间,是一个 long 类型的值,单位是毫秒。

import java.util.Timer;
import java.util.TimerTask;

public class ScheduleTaskDEMO04 {
    public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            int count = 0;

            @Override
            public void run() {
                System.out.println("Task executed " + ++count + " times after a delay of 1 second.");
                if (count == 5) {
                    timer.cancel();
                }
            }
        }, 1000L, 1000L);
    }
}

以上代码实现了延迟 1 秒后每隔 1 秒周期性执行任务,执行 5 次后停止任务。

三、总结

本文具体介绍了 Timer 类的定时调度函数 schedule 常用的四种用法,并且给出了每种用法的代码示例。这些用法可以帮助我们实现一些常见的定时任务的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现Timer的定时调度函数schedule的四种用法 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • springboot集成kafka消费手动启动停止操作

    下面将详细讲解如何在Spring Boot 项目中集成 Kafka 消费者,并实现手动启动、停止操作。 步骤一:添加Kafka依赖 在 maven 的 pom 文件中添加 Kafka 相关依赖: <dependency> <groupId>org.springframework.kafka</groupId> <ar…

    Java 2023年5月20日
    00
  • Spring Boot 使用Druid详解

    Spring Boot使用Druid的详细攻略如下: 添加Druid依赖 在Spring Boot中使用Druid,需要在pom.xml文件中添加Druid的依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot…

    Java 2023年5月15日
    00
  • Java CompletableFuture 异步超时实现深入研究

    《Java CompletableFuture 异步超时实现深入研究》介绍了如何通过 CompletableFuture 类实现异步操作的超时控制,通过本文可以深入了解 CompletableFuture 的超时机制,并实现项目开发中常用的异步超时场景。 本文包含以下内容: 1. CompletableFuture 简介 在Java 8中,引入了 Compl…

    Java 2023年5月27日
    00
  • Java使用utf8格式保存文本文件的方法

    要在Java中使用UTF-8格式保存文本文件,需要执行以下步骤: 1. 设置文件编码 首先,需要在你的Java程序中明确地设置文件编码为UTF-8,这可以通过以下步骤实现: import java.nio.charset.StandardCharsets; import java.io.BufferedWriter; import java.io.FileW…

    Java 2023年5月19日
    00
  • Java格式化输出详细讲解(printf、print、println、format等)

    Java格式化输出详细讲解 在Java中,输出文本信息是非常常见的操作。但是,如果我们想要打印更规范、更美观的输出文本信息,那么我们就需要使用Java的格式化输出操作。 Java的格式化输出操作有多种方式,包括printf、print、println和format等。下面将详细讲解这些操作的使用方法和示例。 printf操作 printf是最常用的格式化输出…

    Java 2023年5月26日
    00
  • 基于jsp的AJAX多文件上传的实例

    针对“基于jsp的AJAX多文件上传的实例”这个主题,下面是一个基本的攻略应该包含的内容: 一、概述 主题简介:介绍主题的背景和目的,以及实现这个主题的好处和意义。 技术栈选择及原因:选择使用哪些技术及其原因,这个主题需要哪些技术来实现。 二、准备工作 搭建环境:明确需要使用哪些软件和工具,安装和配置这些软件和工具。 项目结构和文件:描述该主题的样例代码的目…

    Java 2023年6月15日
    00
  • 基于Spring Boot应用ApplicationEvent案例场景

    下面是基于Spring Boot应用ApplicationEvent案例场景的完整攻略,包括了示例演示。 1. Spring Boot中的ApplicationEvent Spring Boot是基于Spring框架的快速开发工具,而Spring框架中的事件机制是一个非常重要的组件。在Spring Boot应用中,可以通过ApplicationEvent来实…

    Java 2023年5月19日
    00
  • Java 基础语法 异常处理

    Java 基础语法 异常处理 在Java编程中,异常处理是必不可少的部分。因为我们写的程序难免出现一些不可预见的情况,比如文件丢失、网络连接中断等等。这些情况,称之为异常。如果没有进行适当的处理,会导致程序的崩溃,影响整个程序的运行。因此,我们需要通过异常处理技术来保证程序的健壮性和可靠性。 异常的定义 异常是在程序中发生的不正常情况,它中断了程序的正常执行…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部