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好多了

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值