在Java中实现定时器任务

90 阅读4分钟

在靠近用户的地方部署容器

本工程教育(EngEd)计划由科支持。

在全球范围内即时部署容器。Section是经济实惠、简单而强大的。

免费入门

在Java中实现定时器任务

11月3日, 2021

Java编程语言提供了一个被称为Timer Task的类工具。它允许人们安排不同的任务。

换句话说,一个任务可以在一个给定的时间段后或在指定的日期和时间执行。

Java中的Timer ,是一个让线程为以后的执行安排任务的过程。

调度是通过在队列中保留一个特定的进程来完成的,这样当执行时间到来时,处理器可以暂停其他进程并运行该任务。

目录

前提条件

为了更好地理解这篇文章,你将需要。

Java 计时器任务方法

有三个Java定时器任务方法。

  • cancel() 方法
  • run() 方法
  • ScheduleExecutionTimer
Cancel()方法

这个方法取消了Java中的一个预定任务。它意味着在一个特定的时期内不会有任务被执行。

Run()方法

run() 方法负责运行预定任务。

ScheduleExecutionTime()方法

该方法返回内存中最新任务的计划执行时间。

代码示例

当你完成下载IntelliJ IDEA后,以管理员身份运行它,然后按照屏幕上的提示来完成设置。

安装完IDE后,启动它并点击New Project ,如下图所示。

New

选择java ,然后点击Next

Java

勾选Create project from template ,然后点击Next

Project template

在下一个屏幕上,输入项目名称为TimerTask ,然后点击Finish 。我们就可以在下一个屏幕上写我们的代码了。环境应该是这样的。

Enviroment

让我们创建一个例子,安排一个任务,当日期为October 30th, 2021 at midnight ,显示信息Happy Birthday John Doe

package com.company;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
public class Main {
    public static void main(String[] args) {
        Timer T = new Timer();
        TimerTask Birthday = new TimerTask(){
            @Override
            public void run(){
                System.out.println("Happy Birthday John Doe");
            }
        };
        Calendar date = Calendar.getInstance();
        date.set(2021, Calendar.OCTOBER, 31, 0, 0, 0);
        T.schedule(Birthday, date.getTime());
    }
}

上述代码的输出将是。

Happy Birthday John Doe

在上面的代码中,我们正在导入CalendarTimer ,和TimerTask 实用程序。

Timer T = new Timer() 是一个记录时间的定时器的实例。 是由TimerTask执行的任务。Birthday

当时间到了,TimerTask 实例的run 函数被执行。

schedule 函数将任务与定时器联系起来。这个方法引用将被执行的任务。

在下面的例子中,我们将创建一个Calendar Date 的实例,并设置任务将被执行的YEAR,MONTH,DAY,HOUR,MINUTE, 和SECOND

我们还可以在项目中加入一个倒计时的计时器,这样我们的计时器就会在任务执行前开始计数。

这可以用if 语句和decrement 操作符来实现,如下图所示。

package com.company;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
public class Main {
    public static void main(String[] args) {
        Timer T = new Timer();
        TimerTask Birthday = new TimerTask(){
            int i = 5;
            @Override
            public void run(){
                if(i>0){
                    System.out.println(i);
                    i--;
                }
                else{
                    System.out.println("Happy Birthday John Doe");
                    T.cancel();
                }
            }
        };
        Calendar date = Calendar.getInstance();
        date.set(2021, Calendar.OCTOBER, 30,23, 59, 54);
       T.scheduleAtFixedRate(Birthday, date.getTime(), 1000);
    }
}

现在代码的输出如下所示。

55
56
57
58
59
Happy Birthday John Doe

为了使计数器以1秒的速度计数,我们使用T.scheduleAtFixedRate (Birthday, date.getTime(), 1000); ,而不是T.schedule(Birthday, date.getTime());1000 milliseconds 代表计数周期。

变量i 被初始化为5 。这意味着任务将在5秒后执行。

时间OCTOBER, 30,23, 59, 54 ,表示计数器将在10月30日23:59时,在第54秒开始。

cancel() 方法用于取消任务的执行,以防止任务完成后再次被执行。

总结

本教程带你了解了Java中定时器任务的概念。

因此,你应该对定时器任务有一个更好的理解,并能将其纳入你的项目中。


同行评审的贡献者。Jethro Magaji

类似文章

[

How to Create a Reusable React Form component Hero Image

语言

如何创建一个可重复使用的React表单组件

阅读更多

](www.section.io/engineering…

Building a payroll system with next.js Hero Image

语言, Node.js

用Next.js构建一个薪资系统

阅读更多

](www.section.io/engineering…

Creating and Utilizing Decorators in Django example image

架构

在Django中创建和使用装饰器

更多信息

](www.section.io/engineering…)