精华内容
下载资源
问答
  • Java定时执行任务的三种方法1)java.util.Timer这个方法应该是最常用的,不过这个方法需要手工启动你的任务:Timer timer=new Timer();timer.schedule(new ListByDayTimerTask(),10000,86400000);这里的...

    Java中定时执行任务的三种方法

    1)java.util.Timer

    这个方法应该是最常用的,不过这个方法需要手工启动你的任务:

    Timer timer=new Timer();

    timer.schedule(new ListByDayTimerTask(),10000,86400000);

    这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法。

    2)ServletContextListener

    这个方法在web容器环境比较方便,这样,在web server启动后就可以

    自动运行该任务,不需要手工操作。

    将ListByDayListener implements ServletContextListener接口,在

    contextInitialized方法中加入启动Timer的代码,在contextDestroyed

    方法中加入cancel该Timer的代码;然后在web.xml中,加入listener:

    com.qq.customer.ListByDayListener

    3)org.springframework.scheduling.timer.ScheduledTimerTask

    如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer

    .xml中加入下面的内容就可以了:

    -//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”>

    10000

    86400000

    展开全文
  • 做数据同步的时候,整理这么几个定时方法,可以借鉴 第一种: jdk提供的定时器工具Timer 1.单线程 2.可以指定延迟(开始执行的时间)、周期时间 3.可以调度指定的的需要执行的任务 /** * Timer也可以...

    做数据同步的时候,整理这么几个定时方法,可以借鉴

    第一种:

    jdk提供的定时器工具Timer 

    1.单线程

    2.可以指定延迟(开始执行的时间)、周期时间

    3.可以调度指定的的需要执行的任务

     

    /**
     *  Timer也可以指定具体时间执行
     *  String time = "2019-07-02 12:00:00"; 
     *  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     *  Date delay = sdf.parse(time);//执行时间
     *  timer.scheduleAtFixedRate(执行任务, delay, 周期);
     */
    public void Ds01()  {
        // 需要定时执行的任务
        TimerTask task = new TimerTask() {
            public void run() {
                System.out.println("-----定时测试-----");
            }
        };
        // Timer定时器工具
        Timer timer = new Timer();
        // 延迟(首次执行的时间)
        long delay = 0;
        // 间隔周期(/毫秒数)
        long intevalPeriod = 5 * 1000;
        立即执行,并且每5秒执行一次
        timer.scheduleAtFixedRate(task, delay, intevalPeriod);
    }

    第二种:最理想的定时器

    1.通过线程池的方式来执行任务

    2.可以设定时间颗粒度
            TimeUnit.DAYS //天        TimeUnit.HOURS  //小时        TimeUnit.MINUTES //分钟  
            TimeUnit.SECONDS //秒        TimeUnit.MILLISECONDS //毫秒        TimeUnit.NANOSECONDS //毫微秒                            TimeUnit.MICROSECONDS //微秒

     

    /**
     * ses.scheduleAtFixedRate(执行任务, 延迟(首次执行的时间), 周期, 延迟/周期的单位);
     */
    public void Ds02() {
    	// 需要定时执行的任务
    	Runnable runnable = new Runnable() {
    		public void run() {
    			System.out.println("-----定时器-----");
    		}
    	};
    	ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
        //立即执行,并且每5秒执行一次
    	ses.scheduleAtFixedRate(runnable, 0, 5000, TimeUnit.MILLISECONDS);
    }

    第三种:SpringBoot项目中的定时器 (SpringBoot中的任务调度)

    1.方便,快速

    1.在boot的启动类(主入口)的类上添加注解@EnableScheduling,加上注解以后,项目会自动添加对应的配置文件

    2.在需要使用任务调度的类上面加注解 @Component,使该类被Spring管理

    import org.springframework.stereotype.Component;
    
    @Component
    public class Ds {
        //方法1 {...}
        //方法2 {...}
        //....
    }
    

    3.任务调度的方法上面加注解 @Scheduled

    1) cron属性:时间表达式

    2) fixedRate属性:上一个调用开始后再次调用的延时(再次调用时不需要等上一个调用执行完成)

    3) fixedDelay属性:上一个调用完成后再次调用的延时(再次调用时需要等上一个调用执行完成)

    4) initialDelay属性:第一次调用时的延迟时间

    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    @Component
    public class Ds {
    
    	//每1000毫秒执行一次该方法
    	@Scheduled(fixedRate = 1000)
    	public void test() {
    		System.out.println("------定时调度------");
    	}
    	
    	
    }

    通常情况下,任务调度需要配合异步功能,所以类只需要再添加一个注解@EnableAsync

    import org.springframework.stereotype.Component;
    import org.springframework.scheduling.annotation.EnableAsync;
    
    @Component
    @EnableAsync
    public class Ds {
    
    	//每1000毫秒执行一次该方法
    	@Scheduled(fixedRate = 1000)
    	public void test() {
    		System.out.println("------定时调度------");
    	}
    	
    }
    

     

    展开全文
  • 第一步:编写测试类,该类extendsTimerTask,重新run()方法,run方法里面就是你要执行的逻辑代码,示例如下:import java.text.SimpleDateFormat;import java.util.Date;import java.util.TimerTask;public class ...

    第一步:编写测试类,该类extends

    TimerTask,重新run()方法,run方法里面就是你要执行的逻辑代码,示例如下:

    import java.text.SimpleDateFormat;

    import java.util.Date;

    import java.util.TimerTask;

    public class MyTest1 extends TimerTask {

    private SimpleDateFormat

    sf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    @Override

    public void run() {

    System.out.println("现在时间是:"+sf.format(new Date()));

    //此处编写程序逻辑代码

    }

    }

    第二步:编写一个类,该类实现ServletContextListener接口

    import javax.servlet.ServletContextEvent;

    import javax.servlet.ServletContextListener;

    public class TimerTaskManager implements ServletContextListener

    {

    private Timer timer;

    @Override

    public void

    contextInitialized(ServletContextEvent sce) {

    System.out.println("程序定时执行任务.....................................");

    MyTest1 t=new MyTest1();

    timer=new Timer("开始执行任务",true);//

    timer.schedule(t, 0,

    1000);//执行MyTest1中的run方法,t代表TimerTask的子类,0代表延迟0毫秒执行run方法,1000表示每隔一秒执行一次run方法,后面两个参数可根据自己的需求而定义

    }

    @Override

    public void contextDestroyed(ServletContextEvent

    sce) {

    System.out.println("程序定时执行任务结束.....................................");

    timer.cancel();

    }

    }

    第三步:在web.xml中添加如下代码里面填写TimerTaskManager的路径,程序在web容器启动后会初始化加载TimerTaskManager的contextInitialized方法:

    加listener标签,listener里面加listener-class标签,listener-class标签里面内容为TimerTaskManager的路径,如:com.TimerTaskManager

    展开全文
  • 在某个时间,执行某个事件时,在JAVA 目前是有三种方法: 底一个是JAVA类中的 Timer 这个类,也是最常用到的第二个是ServletContextListener第三个是 如果用SPRING,org.springframework.scheduling.timer.ScheduledT....

    转载:http://www.liuzm.com/article/java/91021b.htm

     

    在某个时间,执行某个事件时,在JAVA 目前是有三种方法:

    底一个是JAVA类中的 Timer 这个类,也是最常用到的
    第二个是ServletContextListener
    第三个是 如果用SPRING,org.springframework.scheduling.timer.ScheduledTimerTask也可以

    1)java.util.Timer
    这个方法应该是最常用的,不过这个方法需要手工启动你的任务:
    Timer timer=new Timer();
    timer.schedule(new ListByDayTimerTask(),10000,86400000);
    这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法。

    2)ServletContextListener
    这个方法在web容器环境比较方便,这样,在web server启动后就可以自动运行该任务,不需要手工操作。
    将ListByDayListener implements ServletContextListener接口,在contextInitialized方法中加入启动Timer的代码,在contextDestroyed方法中加入cancel该Timer的代码;然后在web.xml中,加入listener:

    <listener>
    <listener-class>com.qq.customer.ListByDayListener</listener-class>
    </listener>

    3)org.springframework.scheduling.timer.ScheduledTimerTask如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer.xml中加入下面的内容就可以了:

     写道
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

    <beans>
    <bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean">
    <property name="scheduledTimerTasks">
    <list>
    <ref local="MyTimeTask1"/>
    </list>
    </property>
    </bean>

    <bean id="MyTimeTask" class="com.qq.timer.ListByDayTimerTask"/>

    <bean id="MyTimeTask1" class="org.springframework.scheduling.timer.ScheduledTimerTask">
    <property name="timerTask">
    <ref bean="MyTimeTask"/>
    </property>
    <property name="delay">
    <value>10000</value>
    </property>
    <property name="period">
    <value>86400000</value>
    </property>
    </bean>
    </beans>
     

     

     

    展开全文
  • 方法适用于,需要每天某个时刻定时(重复)执行某个任务的情况。代码如下:package com.yjl.timer;import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask;/*** 测试...
  • 方法适用于,需要每天某个时刻定时(重复)执行某个任务的情况。代码如下: package com.yjl.timer; import java.util.Calendar; import java.util.Date; import java.util.Timer; import java....
  • Java定时执行任务的三种方法

    热门讨论 2011-06-28 15:58:46
    介绍了Java定时执行任务,给出了如何使用ServletContextListener实现定时运行java某个方法的例子,简单易用。
  • Spring项目启动后定时执行某个方法

    千次阅读 2017-01-22 17:49:07
    需求:在数据库中有一个表储存定时发布的信息和定时发布的...本文知识调用了java.util.Timer类,不能在指定时间运行,使用较多还是2和3方法,所以大家去看大神的这篇吧:http://gong1208.iteye.com/blog/1773177 一...
  • java定时执行

    2016-08-18 11:48:53
    我们在项目中,经常会碰到这样一种需求...让我们需要定时执行的类继承自java.util.TimerTask中的TimerTask类,把需要执行的方法放入run方法中: 1 import java.util.TimerTask; 2  3 public class MyTimerT
  • java 定时执行任务

    2020-08-15 19:16:43
    java 定时执行任务 固定某个时间,某个周期运行任务。 1. Timer定时器 封装与TimerTask类中。 用法,继承TimerTask类,创建Timer对象timer,schedule()调度。 2. Executor + 定时器调度 ScheduledExecutorService类 ...
  • 每天可以定时执行一个程序,运行方法,也就是相当于定时器一样.好处就是可以比如平常程序访问量数据量方面比较大的时候,耗时间时你可以把它定时某个访问量或数据量小的时间段运行.
  • java定时执行代码

    2013-07-19 11:01:56
    java定时执行代码(转) 我们在项目中,经常会碰到这样一种需求,就是让某个程序在某个固定的时间去运行,比如定时备份操作。在Java的J2SE的API中可以很容易做到这一点。 让我们需要定时执行的类继承自java.util...
  • } } 如下图: 第二步:在web.xml文件中配置监听 com.wbg.treasure.controller.ScheduleController 以上这篇tomcat启动完成执行 某个方法 定时任务(Spring)操作就是小编分享给大家的全部内容了,希望能给大家一个...
  • JAVA定时执行

    2010-11-11 17:01:13
    我们在项目中,经常会碰到这样一种需求,就是...让我们需要定时执行的类继承自java.util.TimerTask中的TimerTask类,把需要执行的方法放入run方法中: import java.util.TimerTask; public class MyTimerTas...
  • 6#3表示该月第3个周五 2)Cron表达式范例: 每隔5秒执行一次:*/5 * * * * ? 每隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 每天凌晨1点执行一次:0 0 1 * * ? 每月1号凌晨1点执行一次:0 0 1 1 ...
  • java定时执行代码(转)

    2013-12-19 12:24:55
    我们在项目中,经常会碰到这样一种需求,就是...让我们需要定时执行的类继承自java.util.TimerTask中的TimerTask类,把需要执行的方法放入run方法中: 1 import java.util.TimerTask; 2  3 public class MyTimerTas
  • 程序定时执行某个方法 首先要添加监听 在web.xml中添加 com.common.jpush.Jpushlinster 其次就是编写监听器 import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; ...
  • (手机横屏看源码更方便)注:java源码分析部分如无特殊说明均基于...定时任务是我们经常会用到的一种任务,它表示在未来某个时刻执行,或者未来按照某种规则重复执行的任务。问题(1)如何保证任务是在未来某个时刻才被...
  • Java程序定时执行shell脚本

    千次阅读 2017-02-16 10:38:21
    第一次写博客,写的不好还请见谅。 之前在Linux环境中想定期执行某个脚本,第一反应就是将这个task加入到crontab里(crontab的知识点这里就不具体...我的解决方法是后台跑Java程序,利用Java程序定时执行shell脚本。
  • 使用Java基础定时执行程序 我们在项目中,经常会碰到这样一...让我们需要定时执行的类继承自java.util.TimerTask中的TimerTask类,把需要执行的方法放入run方法中:  1 import java.util.TimerTask;  2
  • 2019独角兽企业重金招聘Python工程师标准>>> ...说明:业务类不需要继承任何父类,也不需要实现任何接口,只是一个普通的java类。 转载于:https://my.oschina.net/lybblbb/blog/1544234
  • 6#3表示该月第3个周五 2)Cron表达式范例: 每隔5秒执行一次:*/5 * * * * ? 每隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 每天凌晨1点执行一次:0 0 1 * * ? 每月1号凌晨1点执行一次:0 0 1 1 ...
  • java 编写定时器实例 每天定时执行和N分钟...第一种:要求程序定时执行某个方法,如:没5分钟扫描数据库tb_test表package com.jwht.hbgs.datatransfer;import java.io.IOException;/*** Title: * Description: * ...
  • 并且你可以让其以特定频率一直执行某个任务,这个任务是用TimerTask来描述的,我们只需要将要进行的操作写在TimerTask类的run方法中即可。先附上两个小例子一遍让读者了解什么是定时器。接着再分析其中的一些源码实....

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 140
精华内容 56
关键字:

java定时执行某个方法

java 订阅