精华内容
下载资源
问答
  • 2016-12-12 16:15:58

    schedule和scheduleAtFixedRate的区别在于,如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行,而schedule不会把过去的时间算上。

    比如

    SimpleDateFormat fTime = new SimpleDateFormat(“yyyy/MM/dd HH:mm:ss”);
    Date d1 = fTime.parse(“2005/12/30 14:10:00”);

    t.scheduleAtFixedRate(new TimerTask(){
    public void run()
    {
    System.out.println(“this is task you do6”);
    }
    },d1,3*60*1000);

    间隔时间是3分钟,指定开始时间是2005/12/30 14:10:00,如果我在14:17:00分执行这个程序,那么会立刻打印3次

    this is task you do6 //14:10
    this is task you do6 //14:13
    this is task you do6 //14:16

    并且注意,下一次执行是在14:19 而不是 14:20。就是说是从指定的开始时间开始计时,而不是从执行时间开始计时。

    但是上面如果用schedule方法,间隔时间是3分钟,指定开始时间是2005/12/30 14:10:00,那么在14:17:00分执行这个程序,则立即执行程序一次。并且下一次的执行时间是 14:20,而不是从14:10开始算的周期(14:19)。

    需要注意的是scheduleAtFixedRate和schedule在参数完全相同的情况下,执行效果是不同的。上面例子中任务只是打印一个字符串,比较简单。但如果任务比较复杂,或者由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则scheduleAtFixedRate方法将快速连续地出现两次或更多的执行,从而使后续执行能够“追赶上来”;而schedule方法的后续执行也将被延迟。所以,在长期运行中,scheduleAtFixedRate执行的频率将正好是指定周期的倒数,schedule 执行的频率一般要稍慢于指定周期的倒数。

    scheduleAtFixedRate 效率总体上高于schedule

    更多相关内容
  • 技术贴->java 定时器

    2021-02-28 14:21:09
    该楼层疑似违规已被系统折叠隐藏此楼查看此楼==============java 定时器可以用作,定时刷新缓存等。。。。。。。。。。。 timer.schedule(task, firstTime, period); task参数是,TimerTask 类,在包:import java....

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    ==============

    java 定时器可以用作,定时刷新缓存等。。。。。。。。。。。 timer.schedule(task, firstTime, period); task参数是,TimerTask 类,在包:import java.util.TimerTask .使用者要继承该类,并实现 public void run() 方法,因为 TimerTask 类 实现了 Runnable 接口。 firstTime参数是,当你调用该方法后,该方法必然会调用 TimerTask 类 TimerTask 类 中的 run() 方法,这个参数就是这两者之间的差值,转换成汉语的意思就是说,用户调用 schedule() 方法后,要等待这么长的时间才可以第一次执行 run() 方法。 period参数是,第一次调用之后,从第二次开始每隔多长的时间调用一次 run() 方法。 schedule和scheduleAtFixedRate的区别在于,如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行,而schedule不会把过去的时间算上。 schedule import java.util.Timer;

    import java.util.TimerTask;

    public class TestTimer {

    static Timer timer = null;

    public static void main(String[] args) {

    timer = new Timer();

    System.out.println("-----------定时间器已经启动。。。。。。");

    timer.schedule(new TimerTask() {

    @Override

    public void run() {

    System.out.println("运行我了哦!!!");

    }

    }, 0, 5*1000);

    }

    }

    scheduleAtFixedRate import java.text.ParseException;

    import java.text.SimpleDateFormat;

    import java.util.Date; import java.util.Timer;

    import java.util.TimerTask;

    public class TestTimer { public static void main(String[] args) {

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

    try {

    Date datetime = sdf .parse("2007/07/31 23:59:00");

    timer = new Timer();

    System.out.println("-----------定时间器已经启动。。。。。。");

    timer.scheduleAtFixedRate(new TimerTask() {

    @Override

    public void run() {

    System.out.println("scheduleAtFixedRate -----test");

    }

    }, datetime , 5*1000);

    } catch (ParseException e) {

    e.printStackTrace();

    }

    }

    =====================

    定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定指定的任务task在指定的延迟delay后执行。定时器任务类TimerTask是抽象类,继承并重写其run()方法,可实现具体任务。 schedule(TimerTask task, Date time)设定指定任务task在指定时间time执行。 cancel()方法结束这个定时器。 schedule(TimerTask task, long delay, long period)方法设定指定任务task在指定延迟delay后进行固定延迟peroid的执行。 scheduleAtFixedRate(TimerTask task, long delay, long period)方法设定指定任务task在指定延迟delay后进行固定频率peroid的执行。要实现一个定时任务,运用java中的Timer和TimerTask类可以非常容易实现实时调用处理函数。这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需要。看个简单的例子: import java.io.IOException; import java.util.Timer; public class TimerTest { public static void main(String[] args){ Timer timer = new Timer(); timer.schedule(new MyTask(), 1000, 2000);//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务. while(true){//这个是用来停止此任务的,否则就一直循环执行此任务了 try { int ch = System.in.read(); if(ch-'c'==0){ timer.cancel();//使用这个方法退出任务 } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } static class MyTask extends java.util.TimerTask{ @Override public void run() { // TODO Auto-generated method stub System.out.println("________"); } } }

    展开全文
  • 近期工作中接触到java定时器,记下自己在使用schedule方法遇到的小问题,时刻提醒自己对待程序要认真再认真。先写个小例子:package Demo;import java.util.Timer;public class TimeTaskDemo {public static void ...

    近期工作中接触到java的定时器,记下自己在使用schedule方法遇到的小问题,时刻提醒自己对待程序要认真再认真。

    先写个小例子:

    package Demo;

    import java.util.Timer;

    public class TimeTaskDemo {

    public static void main(String[] args){

    Timer timer = new Timer();

    timer.schedule(new Task(), 60 * 1000); // 60秒后执行Task类,只执行一次

    //timer.schedule(new Task(), 1000, 60*1000); //1秒后每隔60秒执行Task类,重复执行

    }

    }

    package Demo;

    import java.util.TimerTask;

    public class Task extends TimerTask {

    public void run()

    {

    System.out.println("添加你想要执行的任务");

    }

    }

    ps:笔者添加了定时器线程,本来想要添加的功能时1秒后重复执行Task类void schedule(TimerTask task, Date firstTime, long period),然而由于没有认真查看Schedule方法,匆忙选择了void schedule(TimerTask task, long delay),结果导致程序只在60秒后执行了一次Task方法。导致重新编码。

    心得:越是时间紧,越是细节的东西,越要仔细查证。

    Timer的构造方法如下:

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

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

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

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

    Schedule重载方法如下:

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

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

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

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

    展开全文
  • 直接贴代码:import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask;public class TestSchedule {static int count = 0;public static void showTimer() {TimerTask ...

    直接贴代码:

    import java.util.Calendar;

    import java.util.Date;

    import java.util.Timer;

    import java.util.TimerTask;

    public class TestSchedule {

    static int count = 0;

    public static void showTimer() {

    TimerTask task = new TimerTask() {

    @Override

    public void run() {

    ++count;

    System.out.println("时间=" + new Date() + " 执行了" + count + "次"); // 1次

    }

    };

    //设置执行时间

    Calendar calendar = Calendar.getInstance();

    int year = calendar.get(Calendar.YEAR);

    int month = calendar.get(Calendar.MONTH);

    int day = calendar.get(Calendar.DAY_OF_MONTH);//每天

    //定制每天的21:09:00执行,

    calendar.set(year, month, day, 16, 55, 00);

    Date date = calendar.getTime();

    Timer timer = new Timer();

    System.out.println(date);

    int period = 2 * 1000;

    //每天的date时刻执行task,每隔2秒重复执行

    timer.schedule(task, date, period);

    //每天的date时刻执行task, 仅执行一次

    //timer.schedule(task, date);

    }

    public static void main(String[] args) {

    showTimer();

    }

    }

    展开全文
  • java schedule-定时器

    2011-08-31 15:13:24
    该class里面包含了定时器的操作,可以设置每天定时启动你写的程序或者是系统程序,打包完成后可以写batch文件,然后开机未登录状态下可以每天自动定时启动执行。
  • Java定时任务Schedule实现的4种方式

    万次阅读 多人点赞 2019-02-28 08:38:20
    java实现定时任务 Schedule https://blog.csdn.net/java_2017_csdn/article/details/78060204 2017年09月22日 10:30:52Java_2017_csdn阅读数:3306 java实现定时任务 Schedule 标签:java实现定时任务 Schedule...
  • 如何在Java中设置定时器

    千次阅读 2021-02-12 22:03:47
    所以答案的第一部分是如何做主题...设置计时器首先,您需要创建一个计时器(我使用的是java.util(此处版本):importjava.util.Timer;..Timertimer=newTimer();若要运行该任务,请执行以下操作:timer.schedule(new...
  • Java中使用@Scheduled定时器操作

    千次阅读 2022-04-13 13:34:36
    Java中使用@Scheduled定时器的几种种操作方式。 1、fixedRate 例:@Scheduled(fixedRate = 5000) //上一次开始执行时间点之后5秒再执行 2、fixedDelay 例:@Scheduled(fixedDelay = 5000) //上一次执行完毕...
  • Java 定时器

    2022-02-04 17:50:54
    使用方法schedule(TimerTask task,long delay,long period)来开启一个定时器,按照计划处理TimerTask任务。 import java.util.Timer; import java.util.TimerTask; public class TimerDemo1 { public static void...
  • Java定时器

    2021-03-22 14:15:05
    Java定时器在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。在WEB项目中可能需要每隔一段时间自动生成静态页,自动检测是否有新邮件,定时自动备份文件等操作。这些都可以通过定时器Timer来...
  • Java实现定时任务 Schedule

    千次阅读 2020-10-28 11:25:04
    1、Java定时任务可以借助 java.util.Timer 来实现 import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class Test { public static void main...
  • 首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util.TimerTask)如: 每隔一个小时执行任务 timer.schedule(TimerTask, 0, ...
  • java定时器实现总结

    2021-03-06 03:57:12
    前言:Java定时器目前主要有3种实现方式:JDK组件,Spring Task,Quartz框架。1. JDK组件(1) java.util.TimerTaskMyTimerTask.java:public class MyTimerTask extendsTimerTask {@Overridepublic voidrun() {System...
  • java定时器

    千次阅读 2021-08-20 20:41:00
    一:简单线程实现 ... * 很简单也很傻的定时器,就是用线程休眠实现 * @author feifei * @Date 2021/8/20 18:57:28 * @Version 1.0 */ public class ThreadTest { private static SimpleDateFormat format
  • Java定时器任务的使用

    2022-04-16 10:47:13
    Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以安排任务“执行一次”或者定期“执行多次”。 在实际的开发当中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。对于这样的操作最方便...
  • Java定时器——springboot定时器篇 文章目录Java定时器——springboot定时器篇前言一、Java定时器是什么?二、路径1.体验2.编写启动类,添加定时器注解3.编写处理类cron表达式总结结语 前言 大家好我是程序员阿毛...
  • Java定时器(Timer)

    千次阅读 2021-06-19 16:48:42
    Timer和TimerTask是用于在后台线程中调度任务的java util类。简单地说,TimerTask是要执行的任务,Timer是调度器。 2.调度一次性任务 2.1 指定延迟后执行 让我们从简单地在定时器的帮助下运行单个任务开始: @Test ...
  • 定时器在一些时候会起到不可忽视的作用,本篇文章我们就来通过一些例子详细了解一下定时器的实现。例1:importjava.util.TimerTask;publicclassTimeTastextendsTimerTask...{//在这里写你要定时执行的方法...
  • 可重置Java定时器

    2021-02-25 19:38:58
    我想有一个java.utils.Timer与一个可重置时间在java.I需要设置一次off事件发生在X秒。如果在创建定时器的时间和X秒之间没有发生任何事情,则事件会正常发生。然而,如果在X秒之前,我决定该事件应该发生在Y秒后,...
  • 某个功能执行需要的时间比较长,则决定采用定时器的方式,每隔一段时间系统自动执行此功能,当界面真正触发时,只需要简单的读取结果,而不需要执行复杂的逻辑判断.那如何实现此功能呢?要想实现它,首先我们需要...
  • 4,定时器 a,编写类,实现TimeTask接口,定时执行的代码写入run()方法中 b. timer.schedule(TimeTask子类对象, 开始执行的日期, 周期); 周期为毫秒数 例子: 类MyTask: import java.util.*; public class MyTask ...
  • 1、schedule(task,delay) 参数:task—所要安排的任务 delay—执行任务前的延迟时间,单位毫秒 作用:等待delay毫秒后执行仅执行一次task import java.text.SimpleDateFormat; import java.util.Calendar; import ...
  • 定时器顾名思义,即定时触发某个事件,分离开来,即包含三个因素:定时,触发,某个事件,本文也将以此为基础介绍五种常见的定时器 本文只做基于SpringBoot的示例,其余版本的请自行查阅资料,大同小异 1.介绍 ...
  • Java 定时器Timer

    千次阅读 2022-04-06 11:49:25
    Timer是Java提供的原生Scheduler(任务调度)工具类,用来在一个后台线程计划执行指定任务。 利用Timer可以安排任务“执行一次”或者定期“执行多次”。 Timer类提供了以下方法: schedule(TimerTask task, Date time...
  • TimerTest2.java:1. packagecom.bjpowernode.test;2.3. importjava.io.IOException;4. importjava.util.Date;5. importjava.util.Timer;6.7. publicclassTimerTest2{8.9. public...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,072
精华内容 6,828
关键字:

java定时器schedule

java 订阅