【Java多线程与并发库】2.传统定时器技术回顾
来源:互联网 发布:彩虹控制软件 编辑:程序博客网 时间:2024/06/05 06:27
Java中的Timer类(java.util.Timer),是最常用的定时类,它可以在隔一段时间之后
再去执行其run方法中设置的代码语句。
使用Timer类定时执行程序有三种方法:
(1)单次定时
new Timer().schedule(task, time);
给Timer类的schedule方法中传入一个TimerTask对象,并重写Task对象的run方法,
将需要定时执行的方法放入其中,然后给schedule方法设置执行时间time(隔几秒执行)。
(2)循环定时
new Timer().schedule(task, firstTime, period);
给Timer类的schedule方法中传入一个TimerTask对象,并重写Task对象的run方法,
将需要定时执行的方法放入其中,然后给schedule方法设置首次执行时间time(隔几秒执行),
循环执行时间period(每多少秒执行一次)。
执行之后
Timer Running...1474617078660
Timer Running...
Timer Running...1474617080667
Timer Running...1474617082670
Timer Running...1474617084674
Timer Running...1474617086678
第一个定时器只执行了一次就结束了,而后面的一秒后每隔两秒就执行一次。
(3)循环定时的递归实现
我们可以编写一个继承TimerTask的子类,来在run中编写要执行的方法,然后我们在
run方法中继续调用run方法,实现递归定时执行,也就是变相的循环定时:
执行之后
Timer Running...
MyTimer Running...1474617452607
MyTimer Running...1474617454613
MyTimer Running...1474617456617
MyTimer Running...1474617458620
MyTimer Running...1474617460626
再去执行其run方法中设置的代码语句。
使用Timer类定时执行程序有三种方法:
(1)单次定时
new Timer().schedule(task, time);
给Timer类的schedule方法中传入一个TimerTask对象,并重写Task对象的run方法,
将需要定时执行的方法放入其中,然后给schedule方法设置执行时间time(隔几秒执行)。
package cn.edu.hpu.test;import java.util.Timer;import java.util.TimerTask;public class ThreadTests { public static void main(String[] args) { new Timer().schedule(new TimerTask(){ @Override public void run() { System.out.println("Timer Running..."); } },1000); }}
(2)循环定时
new Timer().schedule(task, firstTime, period);
给Timer类的schedule方法中传入一个TimerTask对象,并重写Task对象的run方法,
将需要定时执行的方法放入其中,然后给schedule方法设置首次执行时间time(隔几秒执行),
循环执行时间period(每多少秒执行一次)。
package cn.edu.hpu.test;import java.util.Timer;import java.util.TimerTask;public class ThreadTests { public static void main(String[] args) { new Timer().schedule(new TimerTask(){ @Override public void run() { System.out.println("Timer Running..."); } },1000); new Timer().schedule(new TimerTask(){ @Override public void run() { System.out.println("Timer Running..."+System.currentTimeMillis()); } },1000,2000); }}
执行之后
Timer Running...1474617078660
Timer Running...
Timer Running...1474617080667
Timer Running...1474617082670
Timer Running...1474617084674
Timer Running...1474617086678
第一个定时器只执行了一次就结束了,而后面的一秒后每隔两秒就执行一次。
(3)循环定时的递归实现
我们可以编写一个继承TimerTask的子类,来在run中编写要执行的方法,然后我们在
run方法中继续调用run方法,实现递归定时执行,也就是变相的循环定时:
package cn.edu.hpu.test;import java.util.Timer;import java.util.TimerTask;public class ThreadTests { public static void main(String[] args) { new Timer().schedule(new TimerTask(){ @Override public void run() { System.out.println("Timer Running..."); } },1000); new Timer().schedule(new MyTimerTask(),2000); }}class MyTimerTask extends TimerTask{ @Override public void run() { System.out.println("MyTimer Running..."+System.currentTimeMillis()); new Timer().schedule(new MyTimerTask(),2000); }}
执行之后
Timer Running...
MyTimer Running...1474617452607
MyTimer Running...1474617454613
MyTimer Running...1474617456617
MyTimer Running...1474617458620
MyTimer Running...1474617460626
第一个定时器只执行了一次就结束了,而后面的一秒后每隔两秒就执行一次。
转载请注明出处:http://blog.csdn.net/acmman/article/details/52639319
0 0
- 【Java多线程与并发库】2.传统定时器技术回顾
- 【Java多线程与并发库】2.传统定时器技术回顾
- 【Java多线程与并发库】1.传统线程技术回顾
- 【Java多线程与并发库】1.传统线程技术回顾
- 【Java多线程与并发库】02 传统定时器技术
- Java并发库(二):传统定时器技术回顾
- 【Java多线程与并发库】01 传统线程技术
- 传统定时器技术回顾
- Java并发库(一):传统线程技术回顾
- 传统的定时器技术回顾
- 【Java多线程与并发库】3.传统线程互斥技术
- 【Java多线程与并发库】4.传统线程同步通信技术
- 【Java多线程与并发库】3.传统线程互斥技术
- 【Java多线程与并发库】4.传统线程同步通信技术
- 【Java多线程与并发库】03 传统线程互斥技术 synchronized
- 【Java多线程与并发库】04 传统的线程同步通信技术-synchronized/wait/notify/notifyAll
- 【java并发】传统线程技术中的定时器技术
- 【java并发】传统线程技术中的定时器技术
- Retrofit 中文乱码问题
- SQL Server 2000中查询表名,列名及字段类型
- Android5.0以上沉浸式状态栏的问题
- position的四个属性值: relative ,absolute ,fixed,static
- 单链表的逆序输出及就地逆置
- 【Java多线程与并发库】2.传统定时器技术回顾
- IMP-00017: 由于 ORACLE 错误 2304, 以下语句失败: "CREATE TYPE "XXXX_XXX_XXXX问题原因
- FFmpeg学习6:视音频同步
- win环境下mysql 5.7.15 x64变量默认值
- 视频相关术语的介绍
- caffe中的normalization实现
- 今天在学习bootstrap,在使用字体图标的时候,无法显示
- 线性表基本操作
- 微信小程序开发资源 Awesome 大搜集