精华内容
下载资源
问答
  • 2021-02-26 16:12:36

    第一 schedule 方法 三个参数 按照顺序 (执行的任务方法,开始执行时间,多少时间后循环去执行)  代码可用

    public class TestScheedule {

    public static void mutilmethod() throws InterruptedException {

    Date date=new Date();

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    System.out.println("这是一个定时循环执行的方法"+dateFormat.format(date));

    Thread.sleep(1000);

    }

    public static void main(String[] args) throws Exception {

    final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    Date startDate = dateFormatter.parse("2019-2-28 9:41:00");

    Timer timer = new Timer();

    //三个 参数

    timer.schedule(new TimerTask() {

    @Override

    public void run() {

    try {

    mutilmethod();

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    }

    }, 0,5000);//0ms后立刻执行 2000ms后循环执行这个方法

    }

    }

    第二种方式

    scheduleAtFixedRate方法

    public class TestScheduleAtFixed {

    public static void mutilmethod() throws InterruptedException {

    Date date=new Date();

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    System.out.println("这是一个定时循环执行的方法"+dateFormat.format(date));

    Thread.sleep(2000);

    }

    public static void main(String[] args) throws ParseException {

    SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    Date startDate = dateFormatter.parse("2019-2-28 10:24:50");

    Timer timer=new Timer();

    timer.scheduleAtFixedRate(new TimerTask() {

    @Override

    public void run() {

    try {

    mutilmethod();

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    },startDate,1000);

    }

    }

    总结 当 一个方法执行时间超过 定时器任务设置循环任务执行时间 那么就会按照方法执行时间去执行 方法执行完毕 立刻再去执行方法。

    如果一个方法执行时间 不超过定时器设置的任务时间 那么就会按照设置的时间去执行

    总之就一句话 始终按照用时最长的那个去运行。 简单地说就是

    更多相关内容
  • Java定时器的分类

    2021-04-17 08:42:56
    Java编程中定时器的分类:按技术分类:Java自带的java.util.Timer,这个允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章...

    Java编程中定时器的分类:

    按技术分类:

    Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做详细介绍。

    使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,稍后会详细介绍。

    Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,稍后会介绍。

    Timer 类实现代码:

    (转自:http://blog.csdn.net/bzuld/article/details/8598776)

    packagecom.lid;

    importjava.util.Calendar;

    importjava.util.Date;

    importjava.util.Timer;

    importjava.util.TimerTask;

    publicclassTest {

    publicstaticvoidmain(String[] args) {

    //timer1();

    timer2();

    //timer3();

    //timer4();

    }

    // 第一种方法:设定指定任务task在指定时间time执行 schedule(TimerTask task, Date time)

    publicstaticvoidtimer1() {

    Timer timer = newTimer();

    timer.schedule(newTimerTask() {

    publicvoidrun() {

    System.out.println("-------设定要指定任务--------");

    }

    }, 2000);// 设定指定的时间time,此处为2000毫秒

    }

    // 第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行

    // schedule(TimerTask task, long delay, long period)

    publicstaticvoidtimer2() {

    Timer timer = newTimer();

    timer.schedule(newTimerTask() {

    publicvoidrun() {

    System.out.println("-------设定要指定任务--------");

    }

    }, 1000,1000);

    }

    // 第三种方法:设定指定任务task在指定延迟delay后进行固定频率peroid的执行。

    // scheduleAtFixedRate(TimerTask task, long delay, long period)

    publicstaticvoidtimer3() {

    Timer timer = newTimer();

    timer.scheduleAtFixedRate(newTimerTask() {

    publicvoidrun() {

    System.out.println("-------设定要指定任务--------");

    }

    }, 1000,2000);

    }

    // 第四种方法:安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行.

    // Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)

    publicstaticvoidtimer4() {

    Calendar calendar = Calendar.getInstance();

    calendar.set(Calendar.HOUR_OF_DAY, 12);// 控制时

    calendar.set(Calendar.MINUTE, 0);// 控制分

    calendar.set(Calendar.SECOND, 0);// 控制秒

    Date time = calendar.getTime();         // 得出执行任务的时间,此处为今天的12:00:00

    Timer timer = newTimer();

    timer.scheduleAtFixedRate(newTimerTask() {

    publicvoidrun() {

    System.out.println("-------设定要指定任务--------");

    }

    }, time, 1000*60*60*24);// 这里设定将延时每天固定执行

    }

    }

    Quartz代码实现:

    第一步:定义作业类

    import org.quartz.JobExecutionContext;

    import org.quartz.JobExecutionException;

    import org.springframework.scheduling.quartz.QuartzJobBean;

    public class Job1 extends QuartzJobBean {

    private int timeout;

    private static int i = 0;

    //调度工厂实例化后,经过timeout时间开始执行调度

    public void setTimeout(int timeout) {

    this.timeout = timeout;

    }

    /**

    * 要调度的具体任务

    */

    @Override

    protected void executeInternal(JobExecutionContext context)

    throws JobExecutionException {

    System.out.println("定时任务执行中…");

    }

    }

    第二步:

    spring

    配置文件中配置作业类

    JobDetailBean

    Xml代码

    说明:org.springframework.scheduling.quartz.JobDetailBean有两个属性,jobClass属性即我们在java代码中定义的任务类,jobDataAsMap属性即该任务类中需要注入的属性值。

    第三步:配置作业调度的触发方式(触发器)

    Quartz的作业触发器有两种,分别是

    org.springframework.scheduling.quartz.SimpleTriggerBean

    org.springframework.scheduling.quartz.CronTriggerBean

    第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。

    配置方式如下:

    Xml代码

    第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。

    配置方式如下:

    Xml代码

    关于cronExpression表达式的语法参见附录。

    第四步:配置调度工厂

    Xml代码

    说明:该参数指定的就是之前配置的触发器的名字。

    第五步:启动你的应用即可,即将工程部署至tomcat或其他容器。

    其实可以看出Quartz的配置看上去还是挺复杂的,没有办法,因为Quartz其实是个重量级的工具,如果我们只是想简单的执行几个简单的定时任务,有没有更简单的工具,有!

    请看我第下文Spring task的介绍。

    Spring-Task

    上节介绍了在Spring 中使用Quartz,本文介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包,而且支持注解和配置文件两种

    形式,下面将分别介绍这两种方式。

    第一种:配置文件方式

    第一步:编写作业类

    即普通的pojo,如下:

    Java代码

    import org.springframework.stereotype.Service;

    @Service

    public class TaskJob {

    public void job1() {

    System.out.println(“任务进行中。。。”);

    }

    }

    第二步:在spring配置文件头中添加命名空间及描述

    Xml代码

    xmlns:task="http://www.springframework.org/schema/task"

    。。。。。。

    xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

    第三步:spring配置文件中设置具体的任务

    Xml代码

    说明:ref参数指定的即任务类,method指定的即需要运行的方法,cron及cronExpression表达式,具体写法这里不介绍了,详情见上篇文章附录。

    这个配置不消多说了,spring扫描注解用的。

    到这里配置就完成了,是不是很简单。

    第二种:使用注解形式

    也许我们不想每写一个任务类还要在xml文件中配置下,我们可以使用注解@Scheduled,我们看看源文件中该注解的定义:

    Java代码

    @Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.ANNOTATION_TYPE})

    @Retention(RetentionPolicy.RUNTIME)

    @Documented

    public @interface Scheduled

    {

    public abstract String cron();

    public abstract long fixedDelay();

    public abstract long fixedRate();

    }

    可以看出该注解有三个方法或者叫参数,分别表示的意思是:

    cron:指定cron表达式

    fixedDelay:官方文档解释:An interval-based trigger where the interval is measured from the completion time of the previous task. The time unit value is measured in milliseconds.即表示从上一个任务完成开始到下一个任务开始的间隔,单位是毫秒。

    fixedRate:官方文档解释:An interval-based trigger where the interval is measured from the start time of the previous task. The time unit value is measured in milliseconds.即从上一个任务开始到下一个任务开始的间隔,单位是毫秒。

    下面我来配置一下。

    第一步:编写pojo

    Java代码

    import org.springframework.scheduling.annotation.Scheduled;

    import org.springframework.stereotype.Component;

    @Component(“taskJob”)

    public class TaskJob {

    @Scheduled(cron = "0 0 3 * * ?")

    public void job1() {

    System.out.println(“任务进行中。。。”);

    }

    }

    第二步:添加task相关的配置:

    Xml代码

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:tx="http://www.springframework.org/schema/tx"

    xmlns:task="http://www.springframework.org/schema/task"

    xsi:schemaLocation="

    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd

    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"

    default-lazy-init="false">

    说明:理论上只需要加上这句配置就可以了,这些参数都不是必须的。

    Ok配置完毕,当然spring task还有很多参数,我就不一一解释了,具体参考xsd文档http://www.springframework.org/schema/task/spring-task-3.0.xsd。

    附录:

    cronExpression的配置说明,具体使用以及参数请百度google

    本文部分内容转自:http://lengchaotian.iteye.com/blog/1887439

    展开全文
  • Timer定时器工具类

    2020-06-10 15:37:38
    * 定时任务工具类 * * @author ty * @version 2020-06-06 */ @Component public class TimerTaskUtil { //yml文件中配置调度时间 @Value("${schedule.millisecond}") private String period; //...
    
    /**
     * 定时任务工具类
     *
     * @author ty
     * @version 2020-06-06
     */
    @Component
    public class TimerTaskUtil {
    	//yml文件中配置调度时间
        @Value("${schedule.millisecond}")
        private  String period;
    
    	//PostConstruct该注解标识程序启动时定时任务生效
        @PostConstruct
        public void getMyTimerTask() {
            Timer timer = new Timer();
            /**
             * 参数一:任务类对象
             * 参数二:第一次执行前的延迟时间,单位毫秒
             * 参数三:每隔毫秒时间执行一次
             */
            timer.schedule(new MyTimerTask(), 0, Long.parseLong(period));
    
        }
    
        
        //定义一个执行任务的内部类
        class MyTimerTask extends TimerTask {
            public void run() {
             //写需要执行的任务
            }
        }
    
        
    
    }
    
    展开全文
  • java写的任务定时器,设置想设的时间,选择可执行文件或者txt,word,时间一到便会自动运行。现在有源码。
  • 自定义Java定时器.jar

    2018-01-28 16:20:58
    这是一个jar。自定义的一个Java定时器工具类。主要是结合Spring Boot一起使用,并在Spring Boot启动的时候一起启动运行。
  • Java 动态定时器

    2017-08-30 18:31:59
    Java 动态定时器基于Java定时器线程池,阻塞队列实现,定时调度时间采用cron表达式配置的方式,其中cron表达式解析工具类提取自spring。 用法极其简单,只需要将ScheduleUtils工具类复制到项目里,然后调用...
  • Java 定时器Timer

    千次阅读 2022-04-06 11:49:25
    Timer是Java提供的原生Scheduler(任务调度)工具类,用来在一个后台线程计划执行指定任务。 利用Timer可以安排任务“执行一次”或者定期“执行多次”。 Timer类提供了以下方法: schedule(TimerTask task, Date time...

    简介

    Timer是Java提供的原生Scheduler(任务调度)工具类,用来在一个后台线程计划执行指定任务。
    利用Timer可以安排任务“执行一次”或者定期“执行多次”。

    Timer类提供了以下方法:

    • schedule(TimerTask task, Date time)
      安排在 “指定的时间” 执行 指定的任务(只执行一次)
    • schedule(TimerTask task, Date firstTime , long period)
      安排指定的任务在 "指定的时间 " 开始进行 “重复” 的固定延迟执行
    • schedule(TimerTask task,long delay)
      安排在指定延迟后执行指定的任务
    • schedule(TimerTask task,long delay,long period)
      安排指定的任务指定的延迟后开始进行重复的固定延迟执行
    • scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
      安排指定的任务在指定的时间开始进行重复的固定速率执行
    • scheduleAtFixedRate(TimerTask task,long delay,long period)
      安排指定的任务在指定的延迟后开始进行重复的固定速率执行
    • Timer.cancal()
      终止此计时器,丢弃所有当前已安排的任务
    • Timer.purge()
      从此计时器的任务队列中移除所有已取消的任务

    示例:在指定的时间执行一次任务

    public static void main(String[] args) throws ParseException {
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("***");
            }
        };
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse("2022-4-6 12:07:00");
        timer.schedule(task,date);
    }
    

    示例

    • 定时器任务
    class MyTask extends TimerTask{
        private Timer timer;
    
        public MyTask(Timer timer) {
            this.timer = timer;
        }
    
        @Override
        public void run() {
            System.out.println("****");
            timer.cancel();
        }
    }
    
    • 定时执行任务,测试代码
        public static void main(String[] args) throws ParseException {
            Timer timer = new Timer();
            String str = "2022-4-6 15:36:52";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = sdf.parse(str);
            timer.schedule(new MyTask(timer),date);
        }
    
    展开全文
  • 三、ScheduledExecutorService ScheduledExecutorService是从Java SE 5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。 相比于上两个方法,它有以下好处: 1.相比于Timer的单...
  • 定时器顾名思义,即定时触发某个事件,分离开来,即包含三个因素:定时,触发,某个事件,本文也将以此为基础介绍五种常见的定时器 本文只做基于SpringBoot的示例,其余版本的请自行查阅资料,大同小异 1.介绍 ...
  • Java定时器任务的使用

    2022-04-16 10:47:13
    Java定时任务的使用方法 JDK自带Timer实现 ...对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。 核心方法 // 在指定延迟时间后执行指定的任务 schedule(TimerTask task,long delay
  • java电商订单超时改状态工具类 最近在做一个电商项目,要求在用户下单后未付款30分钟后就将订单的状态改为失效,最初想的是用定时器没几秒去数据库查看有哪些订单未付款但超过30分的,就修改状态,这个方式有两种...
  • java Timer定时器管理

    2021-03-06 03:58:54
    1.java timer定时器类。启动执行定时任务方法是timer.schedule(new RemindTask(), seconds*1000);俩参数分别是TimerTask子类,具体执行定时操作所执行的动作,后一个参数是豪秒,代表间隔多久执行一次。2....
  • 上次我们了解过了timer的有关内容,这次来了解下另外一个定时器quartz的实现,快来看看吧。1、首先,在pom.xml中进行最重要也是基础的导包环节org.quartz-schedulerquartz2.2.1<dependency>org.quartz-...
  • java定时器的几种实现方式

    万次阅读 2020-05-08 18:19:58
    有人说,计算机科学这个学科,软件方向研究到头就是数学,硬件方向研究到头就是物理,最轻松的是中间这批使用者,可以不太懂物理,不太懂数学,依旧可以使用计算机作为自己谋生的工具。这个规律具有普适应,看看...
  • 在FineReport报表工具为例,详细介绍一下定时器的参数。1.时间定时器中主要用到的时间参数如下:日报当前日期的前一天:Format(today()-1,”yyyy-MM-dd”)周报当前日期的上一周的第一天:Format(dateInWeek((today()...
  • 对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。private java.util.Timer timer;timer= new Timer(true);timer.schedule(new java.util.TimerTask() {public void run...
  • 人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单...
  • } 自定义定时器 java内置的定时器基本都有点缺陷,很多场景不能灵活运用,那么我们何不自己写一个定时器呢? 写定时器前我们需要了解定时器的规则 时间钟 (寻找到时间的定时器) cron 定时器执行时间 count (定时器执行...
  • timer 功能在指定的时间间隔内反复触发...本文文主要为大家详细介绍了Java定时器Timer的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。定时计划任务功能在Java中主要使用的就是Timer对象,它在内部...
  • Java 定时器

    2021-02-28 09:37:19
    Java 定时器1....Timer:是一个实用工具类,该类用来调度一个线程(schedule a thread) ,使它可以在将来某一时刻执行。Java 的 Timer 类可以调度一个任务运行一次或定期循环运行。Timer tasks should...
  • 定时器顾名思义,即定时触发某个事件,分离开来,即包含三个因素:定时,触发,某个事件,本文也将以此为基础介绍五种常见的定时器 本文只做基于SpringBoot的示例,其余版本的请自行查阅资料,大同小异 1.介绍 1.1...
  • java定时器timer配置

    2021-03-22 18:08:34
    对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。 pr......一、原理 JDK中,定时器任务的执行需要两个基本的类: java.util.Timer; java.util.TimerTask; 要运行一个定时任务,最基本的步骤如下: ...
  • java定时器的使用

    2013-02-26 14:37:37
    在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。 对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类
  • java定时器对比

    2021-03-08 19:13:06
    /** * * * ScheduledExecutorService是从Java SE5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。 * 相比于上两个方法,它有以下好处: * 1>相比于Timer的单线程,它是通过...
  • Java中使用定时器

    2021-12-26 00:48:37
    java 定时器
  • Java定时器的使用(Timer)

    千次阅读 2021-03-09 20:51:43
    java定时器的使用(Timer)1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。private java.util.Timer timer;timer = ...
  • package ...import java.util.Date;import java.util.Timer;import com.cvicse.ump.timer.task.TimTaskTest;/*** 定时任务管理器* @author dyh**/public class TimerManager {/*** 单例模式*/private...
  • Java定时器每小时执行一次

    千次阅读 2021-07-28 18:19:02
    第1章 初识Redis 第2章 使用Redis构建Web应用 第二部分 核心概念: 对Redis命令进行了更详细的介绍,并展示了如何使用Redis去构建更为复杂的辅助工具和应用程序,并在最后展示了如何使用Redis去构建一个简单的社交...
  • Java-Quartz定时器

    千次阅读 2021-09-26 18:43:33
    Java-Quartz定时器 Quartz定时器介绍 Quartz是什么 简单来说就是一个任务调度框架,帮我们自动去执行这些程序。 大部分公司都会用到定时任务这个功能。 比如订单支付来说,超过一定时间会执行这个job,去判断你是否...
  • java定时器的三种用法

    2019-08-16 09:07:03
    * ScheduledExecutorService是从Java SE5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。 * 相比于上两个方法,它有以下好处: * 1>相比于Timer的单线程,它是通过线程池的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,134
精华内容 7,653
关键字:

java定时器工具类

java 订阅