定时任务调度工作(学习记录 二)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 方法 实战中间 ...
随机推荐
- .NET西安社区 [拥抱开源,又见 .NET] 第二次活动简报
「拥抱开源, 又见 .NET」 随着 .NET Core的发布和开源,.NET又重新回到人们的视野. .NET Core的下个3.0即将release,加入非常多的新功能,越来越拥抱变化,DevOps ...
- JavaScript引擎浅析
前言 该文章是为大家整理一个关于js的知识网络,重点是知识的罗列及之间的联系,所以实例可能会有所不足,导致可能没有对应知识的人看不懂,希望大家能够结合其他资料来学习这篇文章,并整理出自己的知识体系. ...
- 事件Event一
事件(Event)例如:最近的视觉中国'黑洞事件'.我们大多数人(订阅者)是通过XX平台(发布者)得知的这一消息,然后订阅者A出售视觉中国的股票(触发的方法),订阅者B买入视觉中国的股票. using ...
- npm --save-dev --save 的区别
我们在使用npm install 安装模块或插件的时候,有两种命令把他们写入到 package.json 文件里面去,比如: --save-dev(-D) --save(-S) 在 package.j ...
- 移动端video不全屏播放
<div class="m-video"> <video x5-playsinline="" playsinline="" ...
- qt生成二维码
到官网下载qrencode http://fukuchi.org/works/qrencode/index.html.en qrenc.c不用,这个是测试用的,把config.h.in文件改为conf ...
- HttpClient 报错 Invalid cookie header, Invalid 'expires' attribute: Thu, 01 Jan 1970 00:00:00 GMT
今天在给我姐夫写一个 QQ 自动加好友的程序,但是在 HttpClient 登陆 QQ 的时候报了一个错: -- ::] - Invalid cookie header: Jan :: GMT -- ...
- 我喜欢的vs code快捷键for mac
mac上的快捷键,尽量是像我用vs studio上靠近. cmd+K+S: 显示快捷键列 cmd+shift+p: 系统配置命令行 cmd+p:项目中文件列表,选择文件 cmd+shift+o:当前文 ...
- MongoDB个人简单总结
当同一个变量被连续插入两次会出现id相同的异常,但是同样内容的两个变量同时插入不会有问题,可能是同一个变量同一个地址生成id相同,导致异常. 默认登陆不需要用户名密码认证,需要密码认证登陆需要在adm ...
- JQuery 图片轮播,详细注释说明,让你一看就会!
准备工作: 1.准备几张大小相同的图片 完成功能: 1.自动轮播 2.手动轮播 3.点击二侧按钮前后切换图片 JQuery插件地址: 链接:https://pan.baidu.com/s/1zNl2- ...