schedule的四种用法:

1.schedule(task,time)

参数:

task----所安排的任务

time----执行任务的时间

作用:

在时间等于或超过time的时候执行且仅执行一次task(ps:这里的  超过  是指time设置为在当前时间之前时,会立即执行task)

测试:

public class MyTimerTask extends TimerTask{
private String name;
public MyTimerTask(String inputName) {
name = inputName;
}
@Override
public void run() {
//以yyyy-MM-dd HH:mm:ss的格式打印当前执行时间
//如2019-4-22 00:00:00
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//打印当前name的内容
System.out.println("Current exec name is:" + name + "--------------" + sf.format(calendar.getTime()));
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class MyTimer {
public static void main(String[] args) {
//创建一个timer实例
Timer timer =new Timer();
//创建一个MyTimerTask实例
MyTimerTask myTimerTask = new MyTimerTask("No.1");
//通过timer定时定频率调用myTimerTask的业务逻辑
// 即第一次执行是在当前时间的两秒之后,之后每隔一秒钟执行一次。执行的是myTimerTask中的run方法。
//timer.schedule(myTimerTask, 2000L,1000L); /*获取当前时间,并设置成距离当前时间三秒之后的时间
* 如当前时间是2019-4-22 23:59:57
* 则设置后的时间则为2019-4-23 00:00:00
* */
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sf.format(calendar.getTime()));
calendar.add(Calendar.SECOND, 3);
//--------- schedule的用法 --------
/*1.schedule(task,time)
* 在时间等于或超过time的时候执行且仅执行一次task
* */
myTimerTask.setName("schedule1");
timer.schedule(myTimerTask, calendar.getTime());
}
}

运行结果如下:

2.schedule(task,time,period)

参数:

task----所要安排的任务

time----首次执行任务的时间

period----执行一次task的时间间隔,单位是毫秒

作用:

时间等于或超过time时首次执行task

之后每隔period毫秒重复执行一次task

/*2.时间等于或超过time时首次执行task
之后每隔period毫秒重复执行一次task
之后每隔两秒执行一次task*/
myTimerTask.setName("schedule2");
timer.schedule(myTimerTask, calendar.getTime(),2000);

执行效果如下:

3.schedule(task,delay)

参数:

task----所要安排的任务

delay----执行任务前的延迟时间,单位是毫秒

作用:

等待delay毫秒后执行且仅执行一次task

演示:

/*3.等待delay毫秒后执行且仅执行一次task
如现在是2019-4-22 00:00:00
则在2019-4-22 00:00:01第一次执行task:打印任务的名字
*/
myTimerTask.setName("schedule3");
timer.schedule(myTimerTask,1000);

执行效果如下:

4.schedule(task,delay,period)

参数:

task----所要安排的任务

delay----执行任务前的延迟时间,单位是毫秒

period----执行一次task的时间间隔,单位是毫秒

作用:

等待delay毫秒后首次执行task0

之后每隔period毫秒重复执行一次task

演示:

/*4.等待delay毫秒后首次执行task
之后每隔period毫秒重复执行一次task
如现在是2019-4-22 00:00:00
则在2019-4-22 00:00:03第一次执行task:打印任务的名字
之后每隔两秒执行一次task*/
myTimerTask.setName("schedule4");
timer.schedule(myTimerTask,3000,2000);

执行效果如下:


scheduleAtFixedRate的两种用法:

scheduleAtFixedRate(task,time,period)

参数:

task----所要安排的任务

time----首次执行任务的时间

period----执行一次task的时间间隔,单位是毫秒

作用:

时间等于或超过time时首次执行task

之后每隔period毫秒重复执行一次task

演示:

/*1.时间等于或超过time时首次执行task
之后每隔period毫秒重复执行一次task
之后每隔两秒执行一次task*/
myTimerTask.setName("scheduleAtFixedRate1");
timer.scheduleAtFixedRate(myTimerTask, calendar.getTime(),2000);

执行效果如下:

scheduleAtFixedRate(task,delay,period)

参数:

task----所要安排的任务

delay----执行任务前的延迟时间,单位是毫秒

period----执行一次task的时间间隔,单位是毫秒

作用:

等待delay毫秒后首次执行task

之后每隔period毫秒重复执行一次task

演示:

/* 2.等待delay毫秒后首次执行task
之后每隔period毫秒重复执行一次task
如现在是2019-4-22 00:00:00
则在2019-4-22 00:00:03第一次执行task:打印任务的名字
之后每隔两秒执行一次task*/
myTimerTask.setName("scheduleAtFixedRate2");
timer.scheduleAtFixedRate(myTimerTask, 3000, 2000);

执行效果如下:

定时任务调度工作(学习记录 二)timer定时函数的用法的更多相关文章

  1. Material Calendar View 学习记录(二)

    Material Calendar View 学习记录(二) github link: material-calendarview; 在学习记录一中简单翻译了该开源项目的README.md文档.接下来 ...

  2. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

  3. JavaScript学习记录二

    title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  4. 2.VUE前端框架学习记录二

    VUE前端框架学习记录二:Vue核心基础2(完结)文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baid ...

  5. Lua和C++交互 学习记录之六:全局函数交互

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  6. ElasticSearch 学习记录之ES短语匹配基本用法

    短语匹配 短语匹配故名思意就是对分词后的短语就是匹配,而不是仅仅对单独的单词进行匹配 下面就是根据下面的脚本例子来看整个短语匹配的有哪些作用和优点 GET /my_index/my_type/_sea ...

  7. 定时任务调度工作(学习记录 三)timer其他重要函数

    TimerTask的两个重要函数: 1.cancel() 作用: 取消当前TimerTask里的任务 演示: 先在继承了TimerTask的类中添加一个计时器,然后在run方法中合适的位置添加canc ...

  8. 定时任务调度工作(学习记录 四)schedule与scheduleAtFixedRate的区别

    根据两种情况来看区别 一.首次计划执行的时间早于当前的时间 1.schedule方法 “fixed-delay”:如果第一次执行时间被延迟了,随后的执行时间按照上一次实际执行完成的时间点进行计算 演示 ...

  9. ASP.NETCore学习记录(二) —— ASP.NET Core 中间件

    ASP.NET Core 中间件 目录: 什么是中间件 ? IApplicationBuilder 使用 IApplicationBuilder 创建中间件 Run.Map 与 Use 方法 实战中间 ...

随机推荐

  1. 前端笔记之服务器&Ajax(中)MySQL基础操作&PHP操作数据库&Ajax

    一.数据库基础 1.1什么是数据库? 什么是数据库? 答:就是一个很大的一个文件,只不过这个文件可以通过一些‘命令’操作数据: 增.删.改.查数据: 数据库等于持久数据和数据操作的一个统称. 数据库是 ...

  2. #6 判断一个数是否为2的n次方

    「ALBB面试题」 [题目] 如何判断一个数是否为2的n次方 [题目分析] 看到这种题,相信大家第一反应就是循环除2,这样做肯定是可以得出结果的:但是这种做法无疑大大增加了计算机的运行时间,一个非常大 ...

  3. k8s应用机密信息与配置管理(九)--技术流ken

    secret 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 Secret. Secret 会以 ...

  4. sql学习笔记(三)—— 联表查询

    上篇写了一些sql查询的知识,这篇接着写一下有关联表查询的知识. 既然是联表查询,那肯定得多个表啊,所以,我们先创建一个教师表,表名为 teacher,并且向表中插入数据. 准备工作: 创建表语句: ...

  5. redis的持久化方式RDB和AOF的区别

    1.前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据.由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能, ...

  6. Java学习点滴——Integer缓存

    前言 一切从下面这段代码开始 public static void test(String[] agrs){ Integer a = 1; Integer b = 2; System.out.prin ...

  7. 非常易于理解‘类'与'对象’ 间 属性 引用关系,暨《Python 中的引用和类属性的初步理解》读后感

    关键字:名称,名称空间,引用,指针,指针类型的指针(即指向指针的指针) 我读完后的理解总结: 1. 我们知道,python中的变量的赋值操作,变量其实就是一个名称name,赋值就是将name引用到一个 ...

  8. 禁用了传说中的PHP危险函数之后,Laravel的定时任务不能执行了?

    虽然已是 2018 年,但网上依然流传着一些「高危 PHP 函数,请一定要禁用!」的标题党文章(搜索关键字:一些需要禁用的PHP危险函数). 这些文章的内容简单直接,给出 php.ini 的 disa ...

  9. ArcEngine ILabelEngineLayerProperties Expression 添加常量

    ArcEngine实现复杂标注的时候,需要结合几个字段并将常量加载表达式中. 开始的时候发现VBScript需要采用“”来括起来常量才能在VB中正常使用,但是 ILabelEngineLayerPro ...

  10. 常见的异步方式async 和 await

    之前研究过c#的async和await关键字,幕后干了什么,但是不知道为什么找不到相关资料了.现在重新研究一遍,顺便记录下来,方便以后查阅. 基础知识 async 关键字标注一个方法,该方法返回值是一 ...