定时任务调度工作(学习记录 二)timer定时函数的用法

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定时函数的用法的更多相关文章
- Material Calendar View 学习记录(二)
Material Calendar View 学习记录(二) github link: material-calendarview; 在学习记录一中简单翻译了该开源项目的README.md文档.接下来 ...
- Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客
==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...
- JavaScript学习记录二
title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- 2.VUE前端框架学习记录二
VUE前端框架学习记录二:Vue核心基础2(完结)文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baid ...
- Lua和C++交互 学习记录之六:全局函数交互
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
- ElasticSearch 学习记录之ES短语匹配基本用法
短语匹配 短语匹配故名思意就是对分词后的短语就是匹配,而不是仅仅对单独的单词进行匹配 下面就是根据下面的脚本例子来看整个短语匹配的有哪些作用和优点 GET /my_index/my_type/_sea ...
- 定时任务调度工作(学习记录 三)timer其他重要函数
TimerTask的两个重要函数: 1.cancel() 作用: 取消当前TimerTask里的任务 演示: 先在继承了TimerTask的类中添加一个计时器,然后在run方法中合适的位置添加canc ...
- 定时任务调度工作(学习记录 四)schedule与scheduleAtFixedRate的区别
根据两种情况来看区别 一.首次计划执行的时间早于当前的时间 1.schedule方法 “fixed-delay”:如果第一次执行时间被延迟了,随后的执行时间按照上一次实际执行完成的时间点进行计算 演示 ...
- ASP.NETCore学习记录(二) —— ASP.NET Core 中间件
ASP.NET Core 中间件 目录: 什么是中间件 ? IApplicationBuilder 使用 IApplicationBuilder 创建中间件 Run.Map 与 Use 方法 实战中间 ...
随机推荐
- SpringCloud微服务如何优雅停机及源码分析
目录 方式一:kill -9 java进程id[不建议] 方式二:kill -15 java进程id 或 直接使用/shutdown 端点[不建议] kill 与/shutdown 的含义 Sprin ...
- 全内存的redis用习惯了?那能突破内存限制类redis产品ssdb呢?
首先说一下背景,在双十一的时候,我们系统接受X宝的订单推送,同事原先的实现方式是使用redis的List作为推送数据的承载,在非大促的场景下, 一切运行正常,内存占用大概3-4G,机器是16G内存.由 ...
- [SpringBoot guides系列翻译]通过JDBC和Spring访问关系数据库
原文 参考链接 hikaricp Spring Boot JDBC Starter Spring Boot Starter Parent h2 database introduction Autowi ...
- 推荐三个 VSCode 摸鱼插件
周三是一周中最难以度过的一天,离上个周末过去了两天,离下个周末也还有两天.为了让各位更好地搬(mo)砖(yu),今天给大家推荐三款效(mo)率(yu)工(shen)具(qi)! 一.听歌插件 1 功能 ...
- c#导出文件,文件名中文乱码解决方法
public string clFielName(string fileName) { System.Web.HttpContext curContext = System.Web.HttpConte ...
- 关于C#chart图表实现多条折线动态绑定数据的问题
之前就已经实现了多条折线绑定数据并显示,但不是动态绑定,而是每一条数据都要进行一次绑定,个人觉得在解决实际问题时,这样的解决方法过于笨重且缺乏扩展性,这次主要是对代码进行优化,实现写一遍代码,无论数据 ...
- js + 加号 报错,IIS 配置
一.问题描述: 1开发环境完全没有问题: 2 build 后生成的js脚本,带有+号. 程序发布到IIS后,带加+号js脚本报错. 二.解决方案 1 修改build规则,让它不产生特殊符号. 能力有 ...
- 【Springboot】Springboot整合Thymeleaf模板引擎
Thymeleaf Thymeleaf是跟Velocity.FreeMarker类似的模板引擎,它可以完全替代JSP,相较与其他的模板引擎,它主要有以下几个特点: 1. Thymeleaf在有网络和无 ...
- vue中的tab栏切换内容变换
<!DOCTYPE html> <html lang="cn-zh"> <head> <meta charset="UTF-8& ...
- Android - 文字向上翻滚效果的实现
本文转载https://xwc2013.iteye.com/blog/1976051 今天看到了一种文字翻滚的效果,感觉非常实用.所以就自己试着做出了这种效果,现在把它分享给大家! 首先在res目录下 ...