server - java web定时任务

查看:220
本文介绍了server - java web定时任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

有这么一个想法,当用户注册时发一封邮件到用户邮箱,同时开启一个定时任务,5分钟后执行。
当用户点击了邮箱的激活地址后,销毁定时任务,否则5分钟后,任务执行,检查用户的激活字段,判断是否已激活,如果未激活,则重新生成验证码。任务结束
思路有了。不过这个定时任务怎么实现,有没有什么监听器能够监听到注册事件自动开启定时任务,还是需要在注册业务逻辑里写一个多线程来实现?

解决方案

个人觉得所有的软件定时都是通过轮寻来完成的,而专门开一个线程来执行这样的任务比较消耗资源,感觉下面的方案可能性能会好一些。

0.首先,我们需要一个每隔5分钟发送一个广播的定时广播
1.当用户注册时,我们注册一个监听者去监听定时广播
2.如果用户点击邮箱中的激活地址,则将之前注册的监听者关闭
3.如果监听者第二次收到广播后,则执行任务,并取消监听

之所以要在第二次收到广播的时候执行任务,是为了保证定时在5~10分钟后能执行任务。当然这样做不能保证准确的定时时间,如果需要提高定时精度的话则可以每分钟发一次广播,甚至每秒钟发一次广播,但是该场景应该不太需要。

定时广播的实现的话,可以使用quartz等工具,甚至可以用消息队列的方式来独立这一块业务。

希望可以有所帮助,如果有不合适和有错误的地方也请尽管拍砖

这篇关于server - java web定时任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆