Java多线程编程(第五章)
2016-06-04 20:46
260 查看
1. Timer的使用
定时计划任务(即在指定的时间开始执行某一个任务)功能在Java中主要使用的是Timer对象,它在内部使用多线程的方式进行处理。Timer类的主要作用是设置任务,封装任务的类是TimerTask,执行任务的代码要放在TimerTask的子类中。
schedule(TimerTask task, Date time)
创建一个Timer就是启动一个线程,这个默认的线程不是守护线程。如果指定时间晚于当前时间时,等到指定时间后再执行;如果指定时间早于当前时间时,则立即执行。Timer里有队列(TaskQueue)来调度多个任务的执行,以执行时间来排列。
schedule(TimerTask task, Date time, long period)
按照指定的间隔无线周期性地执行某一个任务
TimerTask类中的cancel方法的作用是将自身从队列中清除
Timer类中的cancel方法是将队列中的全部任务清除,cancel方法有时并不一定会停止任务(没有获取到队列的锁),而是正常执行
schedule(TimerTask task, long delay)
以当前时间作为参考来做延迟
schedule(TimerTask task, long delay, long period)
以当前时间作为参考来做延迟,在无限周期性地执行任务
schedule 和 scheduleAtFixedRate
方法schedule和scheduleAtFixedRate 主要的区别在于不延时的情况
schedule:如果执行任务的时间没有被延时,那么下一次任务的执行时间参考的是上一次任务的”开始”时间。
scheduleAtFixedRate:如果执行任务的时间没有被延时,那么下一次任务的执行时间参考的是上一次任务的”结束”时间。
相关文章推荐
- Java窗口关闭设置DISPOSE_ON_CLOSE和EXIT_ON_CLOSE 的区别
- 验证struts2中action的查找路径
- 5. 全局异常捕捉【从零开始学Spring Boot】
- [LeetCode][4]Median of Two Sorted Arrays解析 -Java实现
- Java序列化
- 4. 使用别的json解析框架【从零开始学Spring Boot】
- (44). Spring Boot日志记录SLF4J【从零开始学Spring Boot】
- 一、Spring单例模式与线程安全
- hibernate+spring+springMVC
- 为什么Java中synchronized同步的对象不能是Integer等类型
- JAVA-WEB开发第一讲[2016-06-04]eclipse的下载
- Java开发中的23种设计模式详解
- struts2请求参数处理
- java_浮点型加减乘除精确计算
- springmvc+mybatis+maven+junit实现网页的增删查改
- Struts2的动态调用Action方法和默认Action
- Java中的异常 Exception
- JAVA 对象引用,以及对象赋值
- Java EE — Servlet 01 Servlet 开发流程
- SpringMVC注入Spring的bean