线程十二:定时器

定时器在线程中的应用很广泛,比如我们要在某个时间点执行一个特定的任务,或者规律性的重复执行某个任务,这个时候我们就需要使用定时器了。

在java1.3版本之后我们可以使用Timer和TimerTask来构建自己的定时应用。Timer能够在一个后台线程中调度TimerTask用于后续执行,可以单次执行或者规律性的重复执行。为了描述Timer的应用,我们看一个实例:

例子中创建了一个Timer对象,创建了一个TimerTask实现的匿名类,并实现其中的run方法,然后调用timer的schedule方法完成调度。除了可以执行一次调用,还可以使用Timer完成规律性的调用,看下面的实例:

Timer对象调用了schedule方法,以1秒为周期循环调用执行run方法。

Java系统为Timer提供了4个构造器:1.Timer()创建一个非守护线程的定时器。2.Timer(boolean isDaemon)如果为参数isDaemon设置true,则会创建一个守护线程的定时器。3.Timer(String name)创建一个名字是name的非守护线程的定时器。4.Timer(String name,boolean isDaemon)可以定义一个指定名称且可以是守护线程的定时器。

Timer中定义了一系列重载的schedule方法来进行任务调度,比如schedule(TimerTask task,Date time)在某个时间点time完成任务调度;schedule(TimerTask task,Date firstTime,long period)在firstTime开始执行,然后以固定的时间间隔(period)来执行任务调度;schedule(TimerTask task,long delay)在延迟delay毫秒之后任务开始调度;schedule(TimerTask task,long delay,long period)任务在延迟一段时间(delay)后以固定时间间隔(period)执行任务调度。其中还有用于取消任务调度的cancel方法以及移除所有被取消任务的purge方法,大家可以参考Timer的api文档进行详细了解。

当最后一条定时任务执行结束后,该定时器的任务线程将会"优雅"地终止,所谓"优雅"就是结束的过程会在不定的时长里发生。如果要快速终止一个定时器的执行线程,应该使用cancel方法。

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值