java技术栈·定时任务解决方案

背景

在java的场景中,往往会遇到定时执行一些任务的场景,我把解决方案分为基于spring技术栈的和原生java技术栈的,定时执行任务很容易实现,但是过程中,需要踩很多坑,比如定时任务阻塞,定时任务执行报异常,定时任务超时等等的运行时情况,需要让定时任务很好的兼容,不能宕机。

解决方案

定时任务,当需要跟外部资源交互的时候,比如发送socket请求,发送rpc请求,获得数据库链接等等的需要与外部资源交互的时候,一旦触发异常或者是超时,需要有处理策略,保证定时任务,正常运行才可以,不能因为出现异常就崩了,阻塞了,不执行了。

JAVA自身定时任务方案

实现起来,需要考虑两步,定时任务的执行机制 + 执行过程中的保障机制。 这里举一个超时的例子,保证出现超时异常,其他异常的时候,代码会照样执行,如果没有保障机制,线程就会阻塞,一旦阻塞,就不会二次执行了,定时的功能就失去了。

 	Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new Runnable() {
   
   
			public void run() {
   
   
				final ExecutorService exec = Executors.newFixedThreadPool(1);
				Callable<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值