精华内容
下载资源
问答
  • java定时循环任务

    2021-01-27 14:15:01
    java定时循环任务 ...1.定时任务 @Component public class TimerManager { public void start(){ System.out.println("调用此方法"); new TimerManager(); } //时间间隔(1分钟) private static final lo

    java定时循环任务

    目的:工作中一定会遇到,每天(每隔一段时间)更新数据库中的某些字段或者每天跑一下某个任务时。这篇文章就是解决上述问题的。代码如下

    1.定时任务

    @Component
    public class TimerManager  {
       public void start(){
           System.out.println("调用此方法");
           new TimerManager();
       }
       //时间间隔(1分钟)
       private static final long PERIOD_DAY = 1*60*1000;
       public TimerManager(){
           Calendar calendar = Calendar.getInstance();
           //设置时间 时分秒
           calendar.set(Calendar.HOUR_OF_DAY,13);
           calendar.set(Calendar.MINUTE,59);
           calendar.set(Calendar.SECOND,0);
           Date date = calendar.getTime(); //第一次执行定时任务的时间
           if(date.before(new Date())){  //这个判断就是如果此时的时间已经过了设置开始运行的时间,那么就明天这个时候在运行
               date = this.addDay(date,1);
           }
           Timer timer = new Timer();
           /*具体执行任务*/
           Task task = new Task();
           timer.schedule(task,date,PERIOD_DAY);
       }
    
       //增加减少天数
        public Date addDay(Date date,int num){
           Calendar startDt= Calendar.getInstance();
           startDt.setTime(date);
           startDt.add(Calendar.DAY_OF_MONTH,num);
           return startDt.getTime();
        }
    }
    

    2. 具体任务

    public class Task extends TimerTask {
        @Override
        public void run() {
            /*循环执行的方法,可以做什么呢,比如定时更新数据库,定时删除过期数据等等*/
            //这里只是做一个简单的输出
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String time = sdf.format(new Date());
            System.out.println(time+": 又执行了一次");
        }
    }
    

    3. 看一下我写这篇文章,输出了几次

    在这里插入图片描述

    如果是定时更新数据库的数据,还是用procedures比较好。有什么问题留言。

    展开全文
  • 通常在使用java实现定时任务时,有两种方法,一种是spring中的schedule(cron = " */5 * * * ?"),另一种就是java中的timer,timer+TimerTask配合实现,这里附上Timer对象的一些常用apiTimer() 创建-个新计时器。Timer...

    87ac51ebd7191ea64b55ff91e2778773.png

    通常在使用java实现定时任务时,有两种方法,一种是spring中的schedule(cron = " */5 * * * ?"),另一种就是java中的timer,

    timer+TimerTask配合实现,这里附上Timer对象的一些常用api

    Timer()                 创建-个新计时器。

    Timer(boolean isDaemon)        创建一个新计时器, 可以指定其相关的线程作为守护程序运行。

    Timer(String, name)           创建一个新计时器,其相关的线程具有指定的名称。

    Timer(String, name, boolean isDaemon) 创建一个新计时器, 可以指定其相关的线程作为守护程序运行。

    cancel() 终止此计时器,丢弃所有当前已安排的任务。.

    purge () 从此计时器的任务队列中移除所有己取消的任务。

    schedule(TimerTask, task, Date time)                 安排在指定的时间执行指定的任务。

    schedule (TimerTask task, Date firstTime, long period)     安排指定的任务在指定的时间开始进行重复的固定延迟执行。

    schedule (TimerTask task, long, delay)               安排在指定延迟后执行指定的任务。

    schedule (TimerTask task, 1ong. delay, long period)        安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

    scheduleAtFixedRate (TimerTask task,Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定速率执行。

    scheduleAtFixedRate (TimerTask task, long delay, long period) 安排指定的任务在指定的延迟后开始进行重复的固定速率执行。

    下面列举一个循环创建TimerTask的实例:

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

    ArrayList list = new ArrayList<>(); //TimeClass是自己写的一个类,只有两个字段,private String startTime和private String endTime;     list.add(new TimeClass("2020-07-23 20:08:00 ","2020-07-23 20:08:15"));     list.add(new TimeClass("2020-07-23 20:08:30 ","2020-07-23 20:08:00"));     DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    //一个对象,在指定的开始时间和结束时间,分别进行不同的操作,如商品的定时上架、下架。

    Timer timer = new Timer();

    for(int i = 0; i < list.size(); i++){

    Date startTime = df.parse(list.get(i).getStartTime());

    Date endTime = df.parse(list.get(i).getEndTime());

    int a=i;

    timer.schedule(new TimerTask() { //新建一个定时任务

    @Override

    public void run() {

    System.out.println("任务开始了"+a);

    }

    },startTime);

    timer.schedule(new TimerTask() {

    @Override

    public void run() {

    System.out.println("任务结束了"+a); }

    },endTime);

    }

    //timer的过程中不会阻塞,不影响下面代码的执行

    for (int i=0;i<=20;i++) {

    System.out.println("=====" + i);

    }

    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持云海天教程。

    原文链接:https://www.cnblogs.com/zhangzhiyong-/p/13368971.html

    展开全文
  • java下的java.util.Timer中类可以实现定时执行任务的执行:如:让任务立即执行,每隔1s循环执行一次public class TimerClass {public static void main(String[] args) {Timer timer = new Timer();TimerTask task =...

    java下的java.util.Timer中类可以实现定时执行任务的执行:

    如:让任务立即执行,每隔1s循环执行一次

    public class TimerClass {

    public static void main(String[] args) {

    Timer timer = new Timer();

    TimerTask task = new TimerTask() {

    int i = 0;

    @Override

    public void run() {

    i += 1;

    System.out.println("第" + i + "次执行");

    }

    };

    // 第二个参数,表示多长时间开始执行调度任务,

    // 第三个参数间隔多长时间执行

    timer.schedule(task, 0, 1000);

    }

    }

    Timer缺陷:

    Timer对调度的支持是基于绝对时间的,而不是相对时间,所以它对系统时间的改变非常敏感。

    Timer线程是不会捕获异常的,如果TimerTask抛出的了未检查异常则会导致Timer线程终止,同时Timer也不会重新恢复线程的执行,他会错误的认为整个Timer线程都会取消。

    使用Executors管理线程,调用newScheduledThreadPool()方法来执行重复任务

    定时任务在Spring中的应用

    一、Spring3.0以后提供了基于Spring的轻量级时间调度框架,可定时执行一些任务

    二、Spring中使用Quartz框架来做调度任务:主要讲述Quartz在Spring中的用法。

    从任务调度的触发时机来分,这里主要是针对作业使用的触发器,主要有以下两种:

    每隔指定时间则触发一次,在Quartz中对应的触发器为:org.springframework.scheduling.quartz.SimpleTriggerBean

    每到指定时间则触发一次,在Quartz中对应的调度器为:org.springframework.scheduling.quartz.CronTriggerBean

    从作业类的继承方式来讲,可以分为两类:

    作业类需要继承自特定的作业类基类,如Quartz中需要继承自org.springframework.scheduling.quartz.QuartzJobBean;java.util.Timer中需要继承自java.util.TimerTask。

    作业类即普通的java类,不需要继承自任何基类。

    主要说明作业类不继承特定基类的方式。

    Spring能够支持这种方式,归功于两个类:

    org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean

    org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean

    这两个类分别对应spring支持的两种实现任务调度的方式,即前文提到到java自带的timer task方式和Quartz方式。这里我只写MethodInvokingJobDetailFactoryBean的用法,使用该类的好处是,我们的任务类不再需要继承自任何类,而是普通的pojo。

    maven依赖

    org.quartz-scheduler

    quartz

    2.2.2

    创建Job类

    public class ShowTimeJob {

    private void showTime() {

    System.out.println("每秒执行:" + new Date());

    }

    }

    在ApplicationContext.xml中配置作业类

    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

    配置触发器:Quartz提供两种触发器形式,cron和simple两种。

    class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

    配置工厂类,管理

    使用cron的时候,可以使用cron表达式来对配置执行的时间,次数等,cron表达式生成器网址:http://cron.qqe2.com

    展开全文
  • 通常在使用java实现定时任务时,有两种方法,一种是spring中的schedule(cron = " */5 * * * ?"),另一种就是java中的timer,timer+TimerTask配合实现,这里附上Timer对象的一些常用apiTimer() 创建-个新计时器。Timer...

    通常在使用java实现定时任务时,有两种方法,一种是spring中的schedule(cron = " */5 * * * ?"),另一种就是java中的timer,

    timer+TimerTask配合实现,这里附上Timer对象的一些常用api

    Timer()                 创建-个新计时器。

    Timer(boolean isDaemon)        创建一个新计时器, 可以指定其相关的线程作为守护程序运行。

    Timer(String, name)           创建一个新计时器,其相关的线程具有指定的名称。

    Timer(String, name, boolean isDaemon) 创建一个新计时器, 可以指定其相关的线程作为守护程序运行。

    cancel() 终止此计时器,丢弃所有当前已安排的任务。.

    purge () 从此计时器的任务队列中移除所有己取消的任务。

    schedule(TimerTask, task, Date time)                 安排在指定的时间执行指定的任务。

    schedule (TimerTask task, Date firstTime, long period)     安排指定的任务在指定的时间开始进行重复的固定延迟执行。

    schedule (TimerTask task, long, delay)               安排在指定延迟后执行指定的任务。

    schedule (TimerTask task, 1ong. delay, long period)        安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

    scheduleAtFixedRate (TimerTask task,Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定速率执行。

    scheduleAtFixedRate (TimerTask task, long delay, long period) 安排指定的任务在指定的延迟后开始进行重复的固定速率执行。

    下面列举一个循环创建TimerTask的实例:

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

    ArrayList list = new ArrayList<>(); //TimeClass是自己写的一个类,只有两个字段,private String startTime和private String endTime;     list.add(new TimeClass("2020-07-23 20:08:00 ","2020-07-23 20:08:15"));     list.add(new TimeClass("2020-07-23 20:08:30 ","2020-07-23 20:08:00"));     DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    //一个对象,在指定的开始时间和结束时间,分别进行不同的操作,如商品的定时上架、下架。

    Timer timer = new Timer();

    for(int i = 0; i < list.size(); i++){

    Date startTime = df.parse(list.get(i).getStartTime());

    Date endTime = df.parse(list.get(i).getEndTime());

    int a=i;

    timer.schedule(new TimerTask() { //新建一个定时任务

    @Override

    public void run() {

    System.out.println("任务开始了"+a);

    }

    },startTime);

    timer.schedule(new TimerTask() {

    @Override

    public void run() {

    System.out.println("任务结束了"+a); }

    },endTime);

    }

    //timer的过程中不会阻塞,不影响下面代码的执行

    for (int i=0;i<=20;i++) {

    System.out.println("=====" + i);

    }

    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 主要介绍了Java循环调用多个timer实现定时任务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Java实现定时任务

    2019-07-31 10:25:57
    一、普通Java项目实现定时任务 1、Thread方式 创建一个thread在while循环中重复运行,然后通过sleep方式控制每次循环的时间,实现简单的定时任务。 //设置时间间隔为1秒 final long timeInterval = 1000; ...
  • 通常在使用java实现定时任务时,有两种方法,一种是spring中的schedule(cron = " */5 * * * ?"),另一种就是java中的timer,timer+TimerTask配合实现,这里附上Timer对象的一些常用apiTimer() 创建-个新计时器。Timer...
  • 前言JDK 有两种定时任务的实现,一种是单线程循环判断,另一种则是线程池。定时器java.util 包下有 Timer 类可用来实现定时任务,下面是一个简单的例子:Date date = new Date(new Date().getTime() + 2000L);new ...
  • 在开发测试工具的应用后台,需要定时任务做日志处理,或者数据清理,包括做些复杂的业务计算逻辑,在...一 Java 基本的定时任务,总结方法有三种:1.1 创建一个thread,然后让它在while循环里一直运行着,通过sleep...
  • java实现定时任务

    2018-11-23 14:54:00
    普通thread-- ...通过sleep方法来达到定时任务的效果。这样可以快速简单的实现, package com.iotek.classtype; public class Task1 { public static void main(String[] args) { fina...
  • /*** 普通thread* 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,* 通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下:*@author GT**/public class Task1 {public static ...
  • 在我们做web项目的时候有些需求需要我们定时每周每天执行什么任务,这里给大家介绍一种方式,我就直接贴代码web.xmlcom.hw.util.BeginRunpublic class BeginRun implements ServletContextListener {java.util.Timer ...
  • java定时任务

    2018-08-21 22:25:30
    java定时任务的实现有很多方式。 比如,开启一个单独的线程,按照自己的规则,一直循环执行。这种方式适用于简单的任务。 java还提供了定时任务相关的类。java.util.Timer和java.util.TimerTask,还有java.util....
  • Java实现定时任务的多种方式 1、Thread类中Thread.sleep(1000); //在while(true)循环内,表示每个1秒执行一次 2、使用Timer类执行定时任务 /** * 使用Timer类实现定时任务 */ public class Demo02 { public ...
  • /***普通thread*这是最常见的,创建一个thread,然后让它在while循环里一直运行着,*通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下*/publicclassTask1{publicstaticvoidmain(String[]args){...
  • 普通thread这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下:publicclassTask1{publicstaticvoidmain(String[]args){//...
  • /*** 普通thread* 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,* 通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下:* @author Mracale**/public class Task1 {public ...
  • java定时任务

    2015-12-13 17:07:17
    我会给大家介绍3种不同的...这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下: 复制代码 代码如下: public cla...
  • 在本文里,我会给大家介绍3种不同的实现方法:普通thread实现TimerTask实现ScheduledExecutorService实现普通thread这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的...
  • 在本文里,我会给大家介绍3种不同的实现方法:普通thread实现TimerTask实现ScheduledExecutorService实现普通thread这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的...
  • 译者注:个人觉得用定时任务来跑垃圾回收不是很好的例子,从译者接触到的项目来看,比较常见的是用定时任务来进行非实时计算,清除临时数据、文件等。在本文里,我会给大家介绍3种不同的实现方法:1.普通thread实现2...
  • java实现定时任务的三种方式

    千次阅读 2018-04-20 10:32:58
    可以指定任务在将来某个时间点运行,或者指定任务从现在开始延迟一个时间段运行 2、任务执行周期:可以指定该任务每间隔多久执行一次Java实现定时任务有三种方法:一、利用Thread及Sleep实现,通过while循环让其不停...
  • Java定时任务

    2015-02-10 15:28:09
    本文中Java定时任务一共有三种,分别是...这是最简单的一种方法,通过创建一个Thread类,让其一直在while循环中执行,并通过sleep方法延时一段时间便可以达到定时任务的目的。 简单代码如下: Java代码 
  • 在开发测试工具的应用后台,经常听到同事说要做个定时任务把做日志处理,或者数据清理,包括做些复杂的业务计算逻辑...一 Java 基本的定时任务,总结方法有三种:1.1 创建一个thread,然后让它在while循环里一直运行...
  • 在本文里,我会给大家介绍3种不同的实现方法:普通thread实现TimerTask实现ScheduledExecutorService实现普通thread这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的...
  • 1. 线程等待:创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果(不建议使用,任务复杂时存在内存泄露风险); public class TestThread{ public static void main(String[]...
  • 1. 总结常见的实现定时任务的几种方法thread实现 【原理:通过创建一个线程,让他在while循环里面一直运行,用sleep() 方法让其休眠从而达到定时任务的效果。】Timer类ScheduledExcecutorService类使用spring的 ...
  • 本文列举常见的java定时任务实现方式,并做一定比较。1. 循环内部sleep实现周期执行创建一个thread,run() while循环里sleep()来实现周期性执行; 简单粗暴,作为一个初学者很容易想到。public class Task1 {public ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 383
精华内容 153
关键字:

java循环定时任务

java 订阅