广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >java如何定时执行任务
  • 481
分享到

java如何定时执行任务

java基础java定时 2022-04-07 05:04:47 481人浏览 猪猪侠
摘要

java如何定时执行一个方法java实现定时功能有多种方式,下面介绍3种:1、创建一个线程.import java.util.Date; public class ThreadTest { public static void ma

java如何定时执行一个方法

java实现定时功能有多种方式,下面介绍3种:

1、创建一个线程.

import java.util.Date;
public class ThreadTest {
    public static void main(String[] args) {
        // 设置执行周期
        final long timeInterval = 3000;
        
        Runnable runnable = new Runnable() {
            public void run() {
                while (true) {
                    System.out.println("Task Run ... " + new Date());
                    
                    try {
                        Thread.sleep(timeInterval);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();
    }
}

2、使用 JDK 自带的 API Timer 以及 TaskTimer。

这种方式和第一种简单粗暴的方式有什么区别呢,主要体现在使用 api 可以在指定的时间开始启动任务,可以延期执行首次任务,同样也看可以设置一定的时间间隔,但是原理是是一样的,后台还是启动了一个线程,应该说是只有一个线程在执行任务,不管我们启动的 Task 有几个。所以这也会有问题,比方说一个一个任务没有执行完成,另一个任务就开始执行了,可能会发生并发问题。还有若是一个任务中报错,则线程就会被停止。

import java.text.SimpleDateFORMat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class MyTask extends TimerTask{

    private String name;
    
    public MyTask(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sf.format(new Date());
        System.out.println("exec MyTask ... 当前时间为:" + format);
        System.out.println(this.name +" 正在执行!" + sf.format(new Date()));
    }
    
    public static void main(String[] args) {
        Timer timer = new Timer();
        TimerTask task1 = new MyTask("Tasks 1");
        TimerTask task2 = new MyTask("Tasks 2");
        
        Calendar calendar1 = Calendar.getInstance();
        calendar1.add(Calendar.SECOND, 3);
        Calendar calendar2 = Calendar.getInstance();
        calendar2.add(Calendar.SECOND, 5);
        
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sf.format(new Date());
        System.out.println("当前时间为:" + format);
        
        timer.schedule(task1, calendar1.getTime(), 3000L);
        timer.schedule(task2, calendar2.getTime(), 3000L);
    }

}

其实在 Timer 中,封装了一个 Task 的队列和 Time 的线程对象,我们自定义的 Task 的引用会放在队列中等待执行。

大致是这么一个关系 Timer - TimerThread - TaskQueue - MyTask - run 当然最终执行的方法肯定是我们自定义任务中的 run 方法。因为我们自定义的任务已经继承了 TimeTask ,而这个类已经实现了 Runnable 接口。

3、使用ScheduledExecutorService

ScheduledExecutorService是做为并发工具类被引进的,这是最理想的定时任务实现方式。

相比于Timer的单线程,它是通过线程池的方式来执行任务的。

可以很灵活的去设定第一次执行任务delay时间。

提供了良好的约定,以便设定执行的时间间隔。

import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class qwe {
    public static void main(String[] args) {
        //新建定时任务
        Runnable runnable = new Runnable() {
            //run方法中是定时执行的操作
            public void run() {
                System.out.println(new Date());
            }
        };
        ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
        
        service.scheduleAtFixedRate(runnable, 0, 60, TimeUnit.SECONDS);
    }
}

编程界网,大量的免费Java入门教程,欢迎在线学习

--结束END--

本文标题: java如何定时执行任务

本文链接: https://www.lsjlt.com/news/2937.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java如何定时执行任务
    java如何定时执行一个方法java实现定时功能有多种方式,下面介绍3种:1、创建一个线程.import java.util.Date; public class ThreadTest { public static void ma...
    99+
    2022-04-07
    java基础 java 定时
  • spring执行定时任务
    定义一个任务是很简单的实现TimerTask的run方法就可以了.如下:SayHelloTask.javapackage test.timerTask;import java.util.TimerTask;public class SayH...
    99+
    2023-06-03
  • java如何防止定时任务未执行完成
    在Java中,可以使用以下几种方法来防止定时任务未执行完成:1. 使用线程池:可以使用Java提供的线程池来执行定时任务,通过设置线...
    99+
    2023-08-29
    java
  • java web如何实现每天定时执行任务
    小编给大家分享一下java web如何实现每天定时执行任务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!package com.eh.util;import java.util.Calendar;imp...
    99+
    2023-05-30
  • @Scheduled 定时任务不执行
    一、排查代码中添加的定时任务步骤是否正确 启动类上加 @EnableScheduling 注解定时任务类上加@Component定时方法上加@Scheduled @Scheduled(cron = "0 19 16 * * ") ...
    99+
    2023-08-30
    java
  • Linux如何定时执行任务教程
    目录1 教程1.1 安装crontabs1.2 查看crontab服务的状态:1.3 查看crontab的日志信息1.4 配置定时任务(1)修改定时任务:(2)查看定时任务1.5 crontab命令详解1.5.1 命令格...
    99+
    2023-04-23
    Linux定时任务教程 Linux定时任务 Linux任务
  • Java使用线程池执行定时任务
    目录1.schedule2.scheduleAtFixedRate3.scheduleWithFixedDelay总结前言: 在 Java 语言中,有两个线程池可以执行定时任务:Sc...
    99+
    2022-11-13
  • java实现周期性执行(定时任务)
    最近是遇到一个设备在线离线的判定问题,设计是每个多长时间(常规的定时任务)检测一次设备是否在前,当检测到里离线时,我们不能立马判断为离线,而是要在重试多测几次,只要一次成功就返回判定...
    99+
    2022-11-13
  • android怎么定时执行任务
    在Android中,有几种方法可以定时执行任务。以下是其中的一些方法:1. 使用Handler和Runnable:可以通过Handl...
    99+
    2023-09-26
    android
  • Linux怎么定时执行任务
    在Linux中,可以使用cron来定时执行任务。Cron是一个用于定期运行命令或脚本的Unix工具。要创建一个定时任务,可以按照以下...
    99+
    2023-08-12
    Linux
  • CentOS7如何执行PHP定时任务详解
    前言 本文主要给大家介绍了关于CenomZhJTPtOS7执行php定时任务的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 一、CentOS 7 安装crontab: yum instal...
    99+
    2022-06-04
    centos 定时执行任务 php定时执行任务 服务器执行php任务
  • java定时任务怎么防止重复执行
    在Java中,可以使用定时任务来执行一段代码,但有时候我们希望在任务完成之前不再重复执行。有几种方法可以防止定时任务重复执行:1. ...
    99+
    2023-10-09
    java
  • Java任务定时执行器案例的实现
    目录⭐️前面的话⭐️1.定时器概述1.1认识定时器1.2Timer类的使用2.定时器的简单实现⭐️前面的话⭐️ 本篇文章将介绍Java多线程案例,定时器,定时器就像闹钟一样,等到了指...
    99+
    2022-11-13
  • 【运维】Linux定时任务 定时执行脚本
    【运维】Linux定时任务 定时执行脚本 在安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的。crond 进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务。 五分钟执行一次sh...
    99+
    2023-08-31
    linux 运维 服务器
  • Tp5 通过crontab 执行定时任务
    声明:此处为ThInkCmf 为例: 在主题中的command 中新建php文件如图 在PHP文件中设置脚本名称及注释,并编写业务逻辑。 protected $output = '';...
    99+
    2023-10-18
    php crontab 定时任务 Powered by 金山文档
  • Crontab表达式执行定时任务
    Cron是一个Linux下的定时执行工具,可用于执行定时任务。 启动、关闭、查看Cron服务的语法: 启动:/sbin/service crond start 查看:/sbin/service cro...
    99+
    2023-09-12
    linux 服务器 运维
  • kettle执行定时任务kitchen.bat该如何分析
    今天就跟大家聊聊有关kettle执行定时任务kitchen.bat该如何分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。环境操作系统:windows server 2008_x86...
    99+
    2023-06-04
  • @Schedule 如何解决定时任务推迟执行
    目录前言一、@Scheduled1、代码2、结果二、@Scheduled + 配置线程池1、代码2、结果三、@Scheduled + @Async1、代码2、结果前言 SpringB...
    99+
    2022-11-13
  • linux如何查看定时任务是否执行
    在Linux系统中,可以通过以下方法来查看定时任务是否执行:1. 使用命令行工具查看日志:定时任务的执行日志通常会被记录在系统的日志...
    99+
    2023-09-08
    linux
  • Job定时任务如何在Spring Boot中执行
    这篇文章给大家介绍Job定时任务如何在Spring Boot中执行,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一,@scheduled注解@scheduled这个注解是定时任务的核心所在,在某个方法上面标记此注解,即...
    99+
    2023-05-31
    springboot 定时任务 job
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作