scheduleAtFixedRate 和schedule

scheduleAtFixedRate 和schedule最近整了一个 TimerTask 要求每天定点执行某一任务 code java importjava util Calendar importjava util Date importjava util Timer importjava util TimerTask importjavax servlet ServletConte imp

最近整了一个TimerTask 要求每天定点执行某一任务.


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

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.log4j.Logger;

public class DoLogListener implements ServletContextListener {
Timer t = null;

public void contextInitialized(ServletContextEvent sce) {
Calendar c = null;
c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 00);
c.set(Calendar.MINUTE, 01);
c.set(Calendar.SECOND, 00);
Date date = c.getTime();
t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
doSomething();
}
}, date, 24 * 60 * 60 * 1000);
//t.schedule(new TimerTask() {
// @Override
// public void run() {
// doSomething();
// }
//}, date, 24 * 60 * 60 * 1000);

}

public void contextDestroyed(ServletContextEvent sce) {
t.cancel();

}

public void doSomething() {
System.out.println("sb")
}
}













































如果服务在当天00:01分以前被启动,两个方法都会在在00:01分时执行任务.
第二次任务执行时间都是00:01+24 * 60 * 60 * 1000,如果过了这个点后启服务两个方法都会马上执行任务.但第二次任务被执行的时间就是差别了,scheduleAtFixedRate是在你设置的date的基础上加24 * 60 * 60 * 1000这个时间段后执行而,schedule是在服务启动时间的基础上加24 * 60 * 60 * 1000这个时间段后执行.


public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(2009, 04, 20, 11, 50,00);
Date date = c.getTime();
Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("aaaaaaa");
}
}, date,2*60*1000);
}












如果你在11:55:00启动服务scheduleAtFixedRate在服务启动时任务就会被执行3次.
11:50:00 第一次
11:52:00 第二次
11:54:00 第三次
第四次的执行时间是:11:56:00
如果用schedule在服务启动时任务只会被执行1次11:50:00第二次执行的时间是11:57:00.











版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233189.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 解决$.ajax()请求异常~ jQuery提示parsererror错误解决办法

    解决$.ajax()请求异常~ jQuery提示parsererror错误解决办法在前端通过ajax请求后台之后返回的时候,出现了下面的异常:error:function(req,textStatus,errorThrown){}req:textStatus:”parsererror”;errorThrown:undefined.而自己的ajax请求如下:type:’POST’,contentType:’application/j…

    2022年6月26日
    55
  • linux中如何给文件重命名_ppt重命名怎么恢复

    linux中如何给文件重命名_ppt重命名怎么恢复Linux下文件重命名、创建、删除、修改及保存文件一、重命名(更名)linux给文件改名的命令是mv命令mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令等同于DOS系统下的ren和move命令的组合。它的使用权限是所有用户。格式mv[options]源文件或目录目标文件或目录。主要参数[options]-i:交互方式操作。如果mv操作将导致对已存在的目标文…

    2025年8月27日
    6
  • HDU ACM 1078 FatMouse and Cheese 记忆化+DFS[通俗易懂]

    HDU ACM 1078 FatMouse and Cheese 记忆化+DFS

    2022年1月31日
    58
  • 职称计算机模块intern,职称计算机考试模块试题.pdf

    职称计算机模块intern,职称计算机考试模块试题.pdf职称计算机考试模块试题职称计算机考试WORD模块试题2008-02-0819:12职称计算机考试,找点题目看看,也不知道是不是就考这些,顺便给大家分享分享.1、新建一word文档,将Windows剪贴板上的内容粘贴到该Word文档中。2、保存当前文档的版本(不输入版本的备注),并设置关闭文档时自动保存版本。3、请用文档结构图显示当前文档,并设置为蓝底白字。4、请将WORD…

    2022年6月2日
    32
  • 【软件测试】测试用例八要素

    【软件测试】测试用例八要素目录测试用例八要素1.测试用例编号2.测试模块3.测试用例标题4.重要级别5.预置条件6.测试输入7.操作步骤8.预期输出测试用例额外的要素1.用例设计者2.用例设计日期3.用例版本号4.对应的开发人员5.测试类型测试用例八要素1.测试用例编号编号是由字母和数字组合而成的,用例的编号应该具有唯一性,易识别性,有且于其和测试结果、错误报告等其他文档的链接。这样看到编号就可以知道是做的什么测试,测试的对象是什么,也方…

    2022年6月28日
    33
  • 小米手机解BL锁教程

    小米手机解BL锁教程1.找到设置,找到我的设备2.点击全部参数,点miui版本,点3下。3.返回,找到更多设置4.找到开发者选项5.找到设备定状态6.绑定账号和设备,关机,按开键加音量减,进去fast模式,链接电脑。7. 电脑打开下载解锁工具:点击链接下载将解锁工具解压缩,点击unlock.exe。7.解锁工具里登入可解锁的小米账号,同时将手机进入fastboot模式(关机状态下长按音量下键和电源键),用数据线连接电脑,提示已连接手机即可,若没有驱动点击图标安装即可。8.设备已解锁-解锁成功

    2022年6月12日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号