定时任务调度工作(学习记录 二)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 方法 实战中间 ...
随机推荐
- [Leetcode]450. Delete Node in a BST
Given a root node reference of a BST and a key, delete the node with the given key in the BST. Retur ...
- 大名鼎鼎的红黑树,你get了么?2-3树 绝对平衡 右旋转 左旋转 颜色反转
前言 11.1新的一月加油!这个购物狂欢的季节,一看,已囊中羞涩!赶紧来恶补一下红黑树和2-3树吧!红黑树真的算是大名鼎鼎了吧?即使你不了解它,但一定听过吧?下面跟随我来揭开神秘的面纱吧! 一.2-3 ...
- React引领未来用户界面——心莱科技内部直播分享会
视频地址(请点开链接观看视频)https://v.qq.com/x/page/l08427ukdjo.html 本周,心莱科技在公司内部就开展了一场前端技术分享会,使用了直播模式进行分享,主要分享关于 ...
- 只需两步!Eclipse+Maven快速构建第一个Spring Boot项目
随着使用Spring进行开发的个人和企业越来越多,Spring从一个单一简介的框架变成了一个大而全的开源软件,最直观的变化就是Spring需要引入的配置也越来越多.配置繁琐,容易出错,让人无比头疼, ...
- 浅谈Google Chrome浏览器(操作篇)(上)
开篇概述 在上篇博客中详解Google Chrome浏览器(理论篇)一文中,主要讲解了Chrome 搜索引擎使用.Chrome安装和基本操作.Chrome 基本架构.多线程等原理性问题,这篇将重点讲解 ...
- [Vue] vue2.0
vue实例 所有的 Vue 组件都是 Vue 实例,并且接受相同的选项对象 当一个 Vue 实例被创建时,它将 data 对象中的所有的属性加入到 Vue 的响应式系统中.当这些属性的值发生改变时,视 ...
- jQuery(二)、选择器
1.#id 根据给定的ID匹配一个元素,如果选择器中包含特殊字符,可以用双斜杆(\\) 转义 如: 查找ID 为 myDiv[bar] 的元素 HTML 代码: <div id="no ...
- 适合精致女孩使用的APP软件 不容错过的精彩人生
阳光下灿烂,风雨中奔跑,每个人都会遇见美丽的缘分,或深或浅,或浓或淡.所以人生不管遇到什么难题,都要勇往直前.今天分享的软件也是十分精彩的,非常适合精彩的你哦! 薄荷健康 薄荷健康APP是专为想要减肥 ...
- 搭建Linux虚拟服务器
1.搭建Linux虚拟机环境安装VMware Workstation 14下载地址:https://www.cr173.com/soft/68480.html密钥:FF31K-AHZD1-H8ETZ- ...
- 随笔:关于去年的WordPress建站的回忆
2018-02-26 建站 2018-02-28 选择主题Clearision 2018-03-01 学习插入视频.修改主题 <iframe src="//playe ...