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. C++STL之Vector向量详解,用法和例子 一起学习 一起加油

                                                                                    C++ STL之vector用法总结 1 ...

  2. 详解mybatis配置文件

    在前面两篇文章中,大致与大家分享了基于Java的ORM框架,Mybatis基本架构和Mybatis实现CRUD的基本原理与流程,在本篇文章中,继续与大家分享Mybatis配置文件. 通过研究Mybat ...

  3. Centos7+lnmp+zabbix4+分离mysql实验

    一.简介 1.什么是zabbix zabbix是一个企业级的.开源的.分布式的监控套件. zabbix可以对网络和服务进行完整性,健康性的监控.zabbix利用灵活的告警机制,可以实验微信,短信和邮件 ...

  4. C# 曲线上的点(二) 获取距离最近的点

    如何在一条曲线上,获取到距离指定点最近的点位置? 与上一篇 C# 曲线上的点(一) 获取指定横坐标对应的纵坐标值 类似, 我们通过曲线上获取的密集点,通过俩点之间连线,获取连线上最近的点.我们能够获取 ...

  5. Spring Boot Security 整合 OAuth2 设计安全API接口服务

    简介 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版.本文重点讲解Spring Boot项目对OAuth2进行的实现,如果你对OAut ...

  6. activemq配置安装

    1.了解JMS查看百度百科 https://baike.baidu.com/item/JMS/2836691?fr=aladdin 2.了解ActiveMQ https://baike.baidu.c ...

  7. css——行内元素和块级元素的具体区别与行内块元素

    (学习笔记) 行内元素(inline)和块级元素(block)都是display属性的值.要知道行内元素和块级元素的区别,首先要了解他们的特性. 行内元素的特性:“行内”,顾名思义,在一行之内,所以相 ...

  8. 大华门禁SDK二次开发(一)-技术沟通

    项目中需要能够查询门禁信号和控制门禁设备,因此需要基于大华门禁SDK进行二次开发,开发语言C#.门禁开发中遇到了一些问题,经过与大华技术的邮件沟通也一一解决.做这个开发的时候,发现网上的资料比较少,想 ...

  9. 从APP跳转到微信指定联系人聊天页面功能的实现与采坑之旅

    起因: 最近做的APP中有一个新功能:已知用户微信号,可点击直接跳转到当前用户微信聊天窗口页面. 当时第一想法是使用无障碍来做,并且觉得应该不难,只是逻辑有点复杂.没想到最终踩了好多坑,特地把踩过的坑 ...

  10. umijs开发实践-不同页面交叉使用dva中的modal文件导致的错误

    最近在使用umijs进行H5开发工作,在开发的过程中踩了一些坑,在这里记录一下. 1:按需加载在现在是很常见的优化方式了,我在.umirc.js中开启dynamicImport后,运行umi buil ...