Java中scheduleAtFixedRate的用法

 更新时间:2023年04月24日 11:10:03   作者:星辰_大海  
如何正确使用Java中的scheduleAtFixedRate是一篇介绍Java中定时任务调度器的文章。它详细介绍了scheduleAtFixedRate方法的用法、参数及作用,并给出了一些实例以帮助读者更好地理解其使用。本文为Java开发人员提供了一些实用的技巧,帮助他们更好地管理和控制定时任务

scheduleAtFixedRate(task,time,period)

task-所要安排的任务 time-首次执行任务的时间 period-执行一次task的时间间隔,单位毫秒

作用:时间等于或超过time首次执行task,之后每隔period毫秒重复执行task

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
 
public class MyTimerTask extends TimerTask {
    @Override
    public void run() {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println("Current Time:"+format.format(calendar.getTime()));//获取当前系统时间
        System.out.println("NO.1");
    }
    public static void main(String[] args) {
        MyTimerTask task = new MyTimerTask();
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println(format.format(calendar.getTime()));
        calendar.add(Calendar.SECOND,3);//获取距离当前时间3秒后的时间
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(task,calendar.getTime(),2000);
    }
}

scheduleAtFixedRate(task, delay,period)

task-所要执行的任务 delay-执行任务的延迟时间,单位毫秒 period-执行一次task的时间间隔

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
 
public class MyTimerTask extends TimerTask {
    @Override
    public void run() {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println("Current Time:"+format.format(calendar.getTime()));//获取当前系统时间
        System.out.println("NO.1");
    }
    public static void main(String[] args) {
        MyTimerTask task = new MyTimerTask();
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
        System.out.println(format.format(calendar.getTime()));
        calendar.add(Calendar.SECOND,3);//获取距离当前时间3秒后的时间
        Timer timer = new Timer();
        //timer.scheduleAtFixedRate(task,calendar.getTime(),2000);
        timer.scheduleAtFixedRate(task,1000,2000);
    }
}

scheduleAtFixedRate和scheduleWithFixedDelay的区别

 1)scheduleAtFixedRate:可以传入runnable,定制第一次的初始化执行时间,周期时间,单位时间-------创建并执行一个周期性任务,过了给定的初始延迟时间(1min执行一次or其他时间),会第一次被执行。执行过程中发生异常,任务停止。

2)scheduleWithFixedDelay:和上一种相类似-----创建并执行周期性任务,第一次执行及异常情况

A:1s中执行一个任务,每个任务执行时间500ms====两种无区别

B:执行任务时间过长,如间隔时间是1s,而执行时间3s====该情况下有区别,主要在周期时间的区别

scheduleWithFixedDelay该方法中一次任务执行时长超过周期时间,下一次任务会在该次任务执行结束时间基础上,计算执行延时(举例子:如间隔时间是1s,而执行时间3s,当前10:03时触发执行,理论而言,10:04时应当执行新任务,但通过该方法执行,执行结束时为10:06,在10:06的基础上延迟1s执行新任务)

scheduleAtFixedRate该方法(举例子:如间隔时间是1s,而执行时间3s,当前10:03时触发执行,10:06执行结束,10:04及10:05累积的任务会立刻执行,而非在10:06的基础上增加延时时间)

到此这篇关于Java中scheduleAtFixedRate的用法的文章就介绍到这了,更多相关Java scheduleAtFixedRate内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springBoot动态加载jar及如何将类注册到IOC

    springBoot动态加载jar及如何将类注册到IOC

    在SpringBoot项目中动态加载jar文件并将其类注册到IOC容器是一种高级应用方式,,这种方法为SpringBoot项目提供了更灵活的扩展能力,使得项目可以在不修改原有代码的基础上增加新的功能模块,感兴趣的朋友一起看看吧
    2024-11-11
  • spring源码下载、编译、debug的详细教程

    spring源码下载、编译、debug的详细教程

    这篇文章主要介绍了spring源码下载、编译、debug的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Idea 搭建Spring源码环境的超详细教程

    Idea 搭建Spring源码环境的超详细教程

    这篇文章主要介绍了Idea 搭建Spring源码环境,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • MyBatis中 #{} 和 ${} 的区别小结

    MyBatis中 #{} 和 ${} 的区别小结

    MyBatis中#{}和${}是两种占位符,本文就来介绍一下MyBatis中 #{} 和 ${} 的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • 浅谈Java中ArrayList的扩容机制

    浅谈Java中ArrayList的扩容机制

    本文主要介绍了浅谈Java中ArrayList的扩容机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 简单说说Java SE、Java EE、Java ME三者之间的区别

    简单说说Java SE、Java EE、Java ME三者之间的区别

    本篇文章小编就为大家简单说说Java SE、Java EE、Java ME三者之间的区别。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • Spring中@PathVariable注解的简单使用

    Spring中@PathVariable注解的简单使用

    这篇文章主要介绍了Spring中@PathVariable注解的简单使用,@PathVariable 是 Spring Framework 中的注解之一,用于处理 RESTful Web 服务中的 URL 路径参数,它的作用是将 URL 中的路径变量绑定到方法的参数上,需要的朋友可以参考下
    2024-01-01
  • Springboot整合Rabbitmq之Confirm和Return机制

    Springboot整合Rabbitmq之Confirm和Return机制

    这篇文章主要介绍了Springboot整合Rabbitmq之Confirm和Return详解,本篇重点进行Confirm 机制和Return 机制的实现和说明,通过实例代码相结合给大家详细介绍,对Springboot整合Rabbitmq相关知识感兴趣的朋友一起看看吧
    2022-02-02
  • kafka生产者发送消息流程深入分析讲解

    kafka生产者发送消息流程深入分析讲解

    本文将介绍kafka的一条消息的发送流程,从消息的发送到服务端的存储。上文说到kafak分为客户端与服务端,要发送消息就涉及到了网络通讯,kafka采用TCP协议进行客户端与服务端的通讯协议
    2023-03-03
  • SpringBoot登录、退出、获取用户信息的session处理方案

    SpringBoot登录、退出、获取用户信息的session处理方案

    这篇文章主要介绍了SpringBoot登录、退出、获取用户信息的session处理,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08

最新评论