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 圈.在 ...
随机推荐
- nvm管理不同版本的node和npm
写在前面 nvm(nodejs version manager)是nodejs的管理工具,如果你需要快速更新node版本,并且不覆盖之前的版本:或者想要在不同的node版本之间进行切换:使用nvm来安 ...
- 【拾遗】理解Javascript中的Arguments
前言 最近在看JavaScript相关的知识点,看到了老外的一本Javascript For Web Developers,遇到了一个知识盲点,觉得老外写的很明白很透彻,记录下来加深印象,下面是我摘出 ...
- Js_增删改Cookie的值
//获得cookie 的值function cookie(name) { var cookieArray = document.cookie.split("; "); //得到分割 ...
- kubernetes 网络故障遇见的坑
1.记录一下自己搭建kubernetes 集群遇见的坑. 过程是我学技术以来最大的bug,处处都是坑,稍微写成一点, 就完全起不来, 起不来之后, 还找不到故障点, 郁闷之极. 后续会慢慢分享给大家. ...
- HDU排序水题
1040水题; These days, I am thinking about a question, how can I get a problem as easy as A+B? It is fa ...
- 机器学习英雄访谈录之 DL 实践家:Dominic Monn
目录 机器学习英雄访谈录之 DL 实践家:Dominic Monn 正文 对我的启发 机器学习英雄访谈录之 DL 实践家:Dominic Monn Sanyam Bhutani 是 Medium 上一 ...
- 使用kubeadm安装kubernetes高可用集群
kubeadm安装kubernetes高可用集群搭建 第一步:首先搭建etcd集群 yum install -y etcd 配置文件 /etc/etcd/etcd.confETCD_NAME=inf ...
- 机器学习初入门01-numpy的基础用法
一.numpy基础结构 1. numpy.genformtxt('路径名', delimiter = '分割符', dytype = 读取方式如str ):读取一个文件,返回一个numpy.ndarr ...
- EOS开发基础之一:源代码下载与开发环境搭建
区块链最近挺火的,我又是个非常缺钱的人,所以紧跟了潮流一头扎进区块链的研究中. 这EOS项目是目前比较火的一个项目,相信很多朋友拿到这份EOS的源代码后都会一脸懵逼,因为……这代码写得太高级了,老纸看 ...
- PAT甲题题解-1069. The Black Hole of Numbers (20)-模拟
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789244.html特别不喜欢那些随便转载别人的原创文章又不给 ...