多线程编程之Timer 学习笔记
2017-12-25 18:45
274 查看
extendsTimerTask
Task是放入队列的,得一个一个运行!造成!!多个任务计划开始的时间和开始的时间差 不一定是设置好的
创建一个任务:
public class MyTask1 extends TimerTask {
@Override
public void run() {
System.out.println("任务执行了,时间为:"+new Date());
}
}
public static void main(String[] args) {
System.out.println("当前时间为"+new Date());
Calendar calendar1 = Calendar.getInstance();
calendar1.add(Calendar.SECOND, 10);
Date runDate = calendar1.getTime();
System.out.println("计划时间为"+runDate);
MyTask task = new MyTask();
Timer timer = new Timer();
//设置定时任务,没隔4s就执行一次task
timer.schedule(task, runDate, 4000);
}
输出结果:
当前时间为Mon Dec 25 19:05:29 CST 2017
计划时间为Mon Dec 25 19:05:39 CST 2017
任务执行了,时间为:Mon Dec 25 19:05:39 CST 2017
任务执行了,时间为:Mon Dec 25 19:05:43 CST 2017
任务执行了,时间为:Mon Dec 25 19:05:47 CST 2017
任务执行了,时间为:Mon Dec 25 19:05:51 CST 2017...............
PS:如果计划时间早于当前时间,则立即执行task任务!
任务时间被延迟,还得一个一个运行!运行结果如下:
当前时间为Mon Dec 25 19:19:07 CST 2017
计划时间为Mon Dec 25 19:19:17 CST 2017
A begin timer =Mon Dec 25 19:19:17 CST 2017
A end timer =Mon Dec 25 19:19:20 CST 2017
A begin timer =Mon Dec 25 19:19:21 CST 2017
A end timer =Mon Dec 25 19:19:24 CST 2017
A begin timer =Mon Dec 25 19:19:25 CST 2017
cancel()将任务从任务队列中进行清除!删除自身:在run方法中调用this.cancel();将任务队列中全部的任务进行清除:timer.cancel():
timer.schedule(TimerTask task,Date firstTime,long period)不具有时间追赶性,scheduleAtFixedRate(.........)具有追赶性——在错过的时间段内对应的Task任务被补充性的执行!
Task是放入队列的,得一个一个运行!造成!!多个任务计划开始的时间和开始的时间差 不一定是设置好的
创建一个任务:
public class MyTask1 extends TimerTask {
@Override
public void run() {
System.out.println("任务执行了,时间为:"+new Date());
}
}
public static void main(String[] args) {
System.out.println("当前时间为"+new Date());
Calendar calendar1 = Calendar.getInstance();
calendar1.add(Calendar.SECOND, 10);
Date runDate = calendar1.getTime();
System.out.println("计划时间为"+runDate);
MyTask task = new MyTask();
Timer timer = new Timer();
//设置定时任务,没隔4s就执行一次task
timer.schedule(task, runDate, 4000);
}
输出结果:
当前时间为Mon Dec 25 19:05:29 CST 2017
计划时间为Mon Dec 25 19:05:39 CST 2017
任务执行了,时间为:Mon Dec 25 19:05:39 CST 2017
任务执行了,时间为:Mon Dec 25 19:05:43 CST 2017
任务执行了,时间为:Mon Dec 25 19:05:47 CST 2017
任务执行了,时间为:Mon Dec 25 19:05:51 CST 2017...............
PS:如果计划时间早于当前时间,则立即执行task任务!
任务时间被延迟,还得一个一个运行!运行结果如下:
当前时间为Mon Dec 25 19:19:07 CST 2017
计划时间为Mon Dec 25 19:19:17 CST 2017
A begin timer =Mon Dec 25 19:19:17 CST 2017
A end timer =Mon Dec 25 19:19:20 CST 2017
A begin timer =Mon Dec 25 19:19:21 CST 2017
A end timer =Mon Dec 25 19:19:24 CST 2017
A begin timer =Mon Dec 25 19:19:25 CST 2017
cancel()将任务从任务队列中进行清除!删除自身:在run方法中调用this.cancel();将任务队列中全部的任务进行清除:timer.cancel():
timer.schedule(TimerTask task,Date firstTime,long period)不具有时间追赶性,scheduleAtFixedRate(.........)具有追赶性——在错过的时间段内对应的Task任务被补充性的执行!
相关文章推荐
- TCP-IP学习笔记四:NIO的网络编程-多线程实例
- iOS学习笔记10(8)—深入浅出 Cocoa 多线程编程之 block 与 dispatch quene
- Java多线程编程核心技术(第五章定时器Timer笔记)
- Java6学习笔记56——多线程编程——线程的创建方法2
- 【学习笔记】多线程编程-线程池/任务/线程
- 《Java 多线程编程核心技术》学习笔记及总结
- [原]Java多线程编程学习笔记之一:线程中断(含代码)
- Linux程序设计学习笔记----多线程编程基础概念与基本操作
- [原]Java多线程编程学习笔记之一:线程中断(含代码)
- block 知识点 ---- Objective-C 高级编程 iOS 与 OS X 多线程内存管理 学习笔记
- IOS学习笔记51--多线程编程之GCD
- Java多线程编程学习笔记之一:线程中断(含代码)
- [零散篇]Java学习笔记---Java的Socket网络编程以及多线程
- JAVASE学习笔记:第十三章 多线程和网络编程
- JAVA学习笔记--4.多线程编程 part5.这些年的那些坑
- 学习笔记3-多线程与网络编程
- Linux多线程编程--学习笔记--多线程简介
- [原]Java多线程编程学习笔记之六:使用synchronized获取互斥锁的几点说明
- Python学习笔记--多线程编程,thread
- [原]Java多线程编程学习笔记之六:使用synchronized获取互斥锁的几点说明