java最简单的定时任务配置,以及TIMER定时器的问题

想起写定时任务,很多码农都第一时间想起quartz。当然本人平时定时任务定时任务的时候也是用quartz,因为实用简单。最近在写项目的时候遇到一个问题。因为项目的限制性和保密协议,只能说不能再pom.xml文件加上包的引用。所以是无法使用quartz定时任务了。当时第一时间就想起使用java.util包下的TIMER定时器来执行定时任务。

先说timer定时器的使用,非常简单。

1、写一个bean,bean里面写个run方法(方法名随意),init-method 指定run方法,配置到spring里面,在spring启动时执行run方法,

例子如下:

 
 

delay是延迟执行的时间,period是执行之后周期性的执行定时任务。

很简单很好用,而且不用加引用包。

问题1,这里提出来与大家一起分享,使用timer定时器来执行定时任务有个问题

多线程定时处理定时任务时,timer运行多个timerTask,只要其中一个没有捕获抛出的异常,所有的定时任务便会终止。

这个问题好严重!!!!

解决方法:

使用java.util.concurrent.包下的ScheduledExecutorService,可以解决timer定时器问题

这个大家很熟悉了吧!

其他配置不变,直接更改run方法:

能避免timer的异常导致的问题,而且还可以设置时间单位,确实比timer好多了

 

Guess you like

Origin blog.csdn.net/q1035331653/article/details/88718398