java计时器_java计时器

一 Timer类与TimerTask类

在Java中要实现定时执行某项任务就需要用到Timer类和TimerTask类。其中,Timer类可以实现在某一刻时间或某一段时间后安排某一个任务执行一次或定期重复执行,该功能需要与TimerTask类配合使用。TimerTask类表示由Timer类安排的一次或多次重复执行的那个任务。

Timer类中的常用方法:

方法

描述

void cancel()

终止此计时器,丢弃所有当前已安排的任务,对当前正在执行的任务没有影响

int purge()

从此计时器的任务队列中移除所有已取消的任务,一般用来释放内存空间

void schedule(TimerTask task, Date time)

安排在指定的时间执行指定的任务

void schedule(TimerTask task, Date firstTime, long period)

安排指定的任务在指定的时间开始进行重复的固定延迟执行

void schedule(TimerTask task, long delay)

安排在指定延迟后执行指定的任务

void schedule(TimerTask task, long delay, long period)

安排指定的任务从指定的延迟后开始进行重复的固定延迟执行

void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

安排指定的任务在指定的时间开始进行重复的固定速率执行

void scheduleAtFixedRate(TimerTask task, long delay, long period)

安排指定的任务在指定的延迟后开始进行重复的固定速率执行

注:1)上面提到的时间的单位都是毫秒

2)schedule()方法和scheduleAtFixedRate()方法的区别在于重复执行任务时对于时间间隔出现延迟的情况的处理:schedule()方法的执行时间间隔永远是固定的,如果之前出现了延迟情况,那么之后也会继续按照设定好的时间间隔来执行;scheduleAtFixedRate()方法在出现延迟情况时,则将快速连续地出现两次或更多的执行,从而使后续执行能够“追赶上来”。从长远来看,执行的频率将正好是指定周期的倒数(假定 Object.wait(long) 所依靠的系统时钟是准确的)

二 一个定时任务范例

输出:

从上面的代码可以看出,操作步骤跟线程是差不多的,首先是用一个类实现TimerTask接口,然后在run()方法里定义具体的任务,最后通过一个Timer实例定时调用这个任务执行(PS:有些

三 使用Timer实现的新闻定时自动采集

在这里,我选用的测试目标是“中国新闻网”的滚动新闻,链接是:http://www.chinanews.com/scroll-news/news1.html 。然后接下来的步骤就很明确了,设置定时任务定时去访问这个网页,然后每次访问时用正则表达式将我们需要的最新新闻的标题、URL、类型和时间提取出来,最后是保存到数据库中。完整代码如下:

附:

(1)JDBCDemo.java:

(2)SQL结构:

最后的效果如下:

d94cedbbe0de1c61cf26d8867b9c6aec.png

每隔2分钟会访问目标网页一次,然后将获取到的新的新闻保存到数据库中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值