20181105 Timer(慕课网)
定时任务调度
基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务
Java中的定时调度工具
- Timer
JDK提供,不许引入
功能简单,能用Timer尽量用
- Quartz
需要引入
功能复杂,Timer不能解决时使用
Timer的定义
有且仅有一个后台线程对多个业务线程进行定时定频率的调度
关键类:java.util.Timer 、 java.util.TimerTask
Timer的基本使用
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(new Date());
}
}, 2000L, 1000L);
重要函数
Timer
schedule // 定时执行
scheduleAtFixedRate // 定时执行,某些情况下不同于schedule
cancel // 终止此计时器,丢弃所有当前已安排的任务
purge // 从此计时器的任务队列中移除所有已取消的任务
TimerTask
cancel // 取消当前TimerTask里的任务
scheduledExecutionTime // 返回此任务最近实际执行的已安排执行的时间
Timer的schedule和scheduleAtFixedRate的区别
- 首次计划执行的时间早于当前的时间
- schedule
"fixed-delay":如果第一次执行时间被delay了,随后的执行时间按照上一次实际执行完成的时间点进行计算
- scheduleAtFixedRate
"fixed-rate": 如果第一次执行时间呗delay了,随后的执行时间按照上一次开始的时间点进行计算,而且为了赶上进度会多次执行任务,因此TimeTask中的执行体需要考虑同步
- 任务执行所需时间超出任务的执行周期间隔
- schedule
下一次执行时间相对于上一次实际执行完成的时间点,因此执行时间会不断延后
- scheduleAtFixedRate
下一次执行时间相对于上一次开始的时间点,因此执行时间一般不会延后,因此存在并发性
Timer的缺陷
- 管理并发任务的缺陷
Timer有且仅有一个线程去执行定时任务,如果存在多个任务,且任务时间过长,会导致执行效果与逾期不符
- 当任务抛出异常时的缺陷
如果TimerTask抛出RuntimeException,Timer会停止所有任务的运行
Timer的使用禁区
- 对时效性要求较高的多任务并发作业
- 对复杂的任务的调度
参考资料
- Java定时任务调度工具详解之Timer篇
- JDK官方文档
20181105 Timer(慕课网)的更多相关文章
- 慕课网-Java入门第一季-7-2 Java 中无参无返回值方法的使用
来源:http://www.imooc.com/code/1578 如果方法不包含参数,且没有返回值,我们称为无参无返回值的方法. 方法的使用分两步: 第一步,定义方法 例如:下面代码定义了一个方法名 ...
- 使用js脚本批量下载慕课网视频
慕课网(http://www.imooc.com/)上有很多不错的视频,当然我不是来给慕课网打广告的,我本人学习过很多慕课网上的免费的视频. 在线看如果网速慢时,可能会有卡顿,没网时无法观看.所有说下 ...
- 手机端web学习基础--from慕课网
web知识零零散散的知道一些,但总感觉不够系统,遇到问题不知道如何解决,因此特此来系统的学习一下web前端的知识.从慕课网的web基础看起.下面学习http://www.imooc.com/learn ...
- 安卓开发_慕课网_Fragment实现Tab(App主界面)
学习内容来自“慕课网” 这里用Fragment来实现APP主界面 思路: 底部横向排列4个LinearLayout,每个LinearLayout包含一个图片按钮和一个文字 1.默认显示第一个功能(微信 ...
- 安卓开发_慕课网_ViewPager与FragmentPagerAdapter实现Tab实现Tab(App主界面)
学习内容来自“慕课网” ViewPager与FragmentPagerAdapter实现Tab 将这两种实现Tab的方法结合起来.效果就是可以拖动内容区域来改变相应的功能图标亮暗 思路: Fragme ...
- 安卓开发_慕课网_ViewPager实现Tab(App主界面)
学习内容来自“慕课网” 网站上一共有4种方法来实现APP主界面的TAB方法 这里学习第一种 ViewPager实现Tab 布局文件有7个, 主界面acitivity.layout <Linear ...
- 慕课网-安卓工程师初养成-4-9 Java循环语句之 for
来源:http://www.imooc.com/code/1425 Java 的循环结构中除了 while 和 do...while 外,还有 for 循环,三种循环可以相互替换. 语法: 执行过程: ...
- 慕课网-安卓工程师初养成-4-8 Java循环语句之 do...while
do...while 循环与 while 循环语法有些类似,但执行过程差别比较大. 语法: 执行过程: <1>. 先执行一遍循环操作,然后判断循环条件是否成立 <2>. 如果 ...
- 慕课网-安卓工程师初养成-4-7 Java循环语句之 while
来源: http://www.imooc.com/code/1420 生活中,有些时候为了完成任务,需要重复的进行某些动作.如参加 10000 米长跑,需要绕 400 米的赛道反复的跑 25 圈.在 ...
随机推荐
- python实现并发爬虫
在进行单个爬虫抓取的时候,我们不可能按照一次抓取一个url的方式进行网页抓取,这样效率低,也浪费了cpu的资源.目前python上面进行并发抓取的实现方式主要有以下几种:进程,线程,协程.进程不在的讨 ...
- .Net-C#异步程序知识点梳理
:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdow ...
- git 报错 error: insufficient permission for adding an object to repository database ./objects
参照:http://stackoverflow.com/questions/1918524/error-pushing-to-github-insufficient-permission-for-ad ...
- Unity3d-通过简单示例来理解Time.deltaTime
转载文章: Unity3d-通过简单示例来理解Time.deltaTime 2018年04月21日 18:04:14 Black_Window 阅读数:926 标签: UnityTime 更多 个人分 ...
- Ubuntu16.04+Java8+Mysql5.7+Tomcat8.5服务器环境配置
本文章使用环境: Ubuntu16.04 Java8 Mysql5.7 Tomcat8.5 Ubuntu 版本16.04, 本文采用SSH远程登录主机 工具:Xshell 默认使用root用户登录 ( ...
- k8s之使用secret获取私有仓库镜像
一.前言 其实这次实践算不上特别复杂,只是在实践过程中遇到了一些坑,以及填坑的方法是非常值得在以后的学习过程中参考借鉴的 二.知识准备 1.harbor是一个企业级的镜像仓库,它比起docker re ...
- 微软职位内部推荐-Senior SW Engineer for Application Ecosystem
微软近期Open的职位: Job posting title: Senior Development Engineer Location: China, Beijing Division: Opera ...
- Todo&Rocket
Todo是怎么实现的? 前面两篇博客分别介绍了MVC和Backbone.js的逻辑,但是实战获真知,在来一篇来显示下Todo是怎么通过Backbone.js连接起来的. 忽略掉所有的代码,我们只是打开 ...
- Linux内核分析课程期中总结
Linux内核分析课程期中总结 姓名:王朝宪 学号:20135114 注: 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com ...
- APP相关问题汇总
APP试用过程中,我们的APP存在不少的问题,下面是一些试用者和我们自己发现的一些问题以及一些建议. 1.APP界面有些老气,界面之间过渡僵硬 2.在试用中会出现闪退情况 3.由于我们使用的是绝对布局 ...