Java如何做定时任务

2025-05-14 16:57:04

1、首先介绍一种软件开发者经常会用的定时任务实现方式。即利用Thread类的sleep方法来实现定时任务。此方法非常容易理解,通过实现Java线程,然后调用sleep方法,让线程停止一段时候后,再接着执行,已达到实现定时任务的目的。下面是本人编写的测试代码。仅供参考!

Java如何做定时任务

2、代码中呢,就是实现了Runnable接口。run方法中,先打印一个当前系统时间,然后呢,接着执行sleep方法,休眠30秒。从而达到,每隔30秒执行一次打印任务的目的。当然,这个任务可以改为你实际需要执行的任务。比如,执行数据库备份等等。下面,我们将执行以下代码,看一下效果!

Java如何做定时任务

3、上面这种方法呢,是比较懋鲕壶迎基础的实现方法。本身也存在一定弊端。一方面呢,定时任务执行不是很灵活,比如说,你想让他指定一段时观锻娜叼候后再执行,不是很好实现。另一方面呢,线程是系统非常宝贵的资源。通过挂起线程来达到实现定时任务的目的,是对系统资源的一种浪费。特别是需要执行的定时任务比较多的时候。这样呢,我们可以提到另一种实现方式。可以利用jdk自带的定时器,Timer来实现。下面是利用Timer实现的一段代码。

Java如何做定时任务
Java如何做定时任务

4、上面代码,分别放在两个类中。第一个类为主类,通过Timer来执行TimerTask任务。第二个类为通过实现TimerTask类来编写具体的任务。此中的任务,也是打印了一个系统时间信息。通过Timer来做这个事情的话,可以指定一个延时时间,即可以指定一段时间后执行。并且线程不再被挂起,执行完后释放。下面,可以看一下执行结果。

Java如何做定时任务

5、是否Timer就是非常完美呢?其实,不然。Timer是对系统时间敏感的定时器,若修改时间,就会出现妓罹鐾岭许多问题。不妨,我们做一个测试,先启动Timer,然后将系统时间调快7分钟。看会出现什么情况?我们会发现,定时器同一时间内连续执行了14次任务(7*60/30=14)。若将时间调慢,还会出现定时任务被挂起的情况。系统时间修改会导致定时器某时间段内的失效。

Java如何做定时任务

6、此时,我们可以引入第三种定时任务执行方式了!通过线程池的scheduleAtFixedRate方法来实现。下面就是实现的代码!

Java如何做定时任务

7、此种方法是一种更加好的实现方式。一方面,此种实现方式继承了Timer的灵活性。另一方面,此种方式方式,对系统时间不再敏感,修改系统时间后,它仍然是按照定时时间来执行。下面,我们仍然将系统时间调快7分钟,看一下测试结果。会发现修改系统时间后,对定时任务不再有影响!

Java如何做定时任务
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢