java程序员修炼之路线程篇十二:定时器

本文介绍了Java中使用Timer和TimerTask进行定时任务的实现方式,包括单次执行和周期性执行任务的示例代码。通过创建Timer对象和定义TimerTask的run方法,可以灵活调度任务执行。此外,还提到了Timer的构造器和schedule方法的不同用法,以及如何优雅地终止定时器。下篇文章将探讨并发工具类的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

  

java程序员修炼之路线程篇十二:定时器

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

  

java程序员修炼之路线程篇十二:定时器

  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、付费专栏及课程。

余额充值