立即停止定时任务

xiaobukuai 2013-12-31 09:44:14
各位大侠,请教一个关于定时任务的问题。

需求大致如下:当一个定时任务正在运行时,强行将其停止,类似于abort和terminate的作用,不让其继续执行完毕。如果不能做到,那就返回一个信息,说明某某任务正在运行或已经停止之类的。总之,就是对定时任务的当前状态要非常清楚。

我查过JDK中的Timer类和TimerTask类,它们的cancel方法都满足不了要求,定时任务会继续执行完毕,我想让它立即停掉不执行。

请问有什么好的解决方案呢?我查了spring,quartz,似乎没有满足我需要的。。。

请各位大侠指教
...全文
308 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
别闹腰不好 2013-12-31
  • 打赏
  • 举报
回复
让定时任务启动一个线程,若果不满足运行条件,停掉这个线程就行了
xiaobukuai 2013-12-31
  • 打赏
  • 举报
回复
Spring或者Quartz里面有方法么?
  • 打赏
  • 举报
回复
既然task都已经进去了,你在外部想停止是没什么办法了,建议你设置个标志位可以存数据库里 第一个方式就是task进去的时候,修改标志位状态,这样其他人只要根据task的编号和标志位就能达到你说的“说明某某任务正在运行或已经停止之类的。”提示功能,你只要读数据库就好了。然后在task执行完成以后再次修改标注位状态。 另外一种是在外部先修改标志位,就是强行停止,TASK进去以后先读取标志位发现不让执行了就返回,然后如果特别巧合就是判断结束以后你修改了标志位,你可以在task的结尾再次读取那个状态,如果发现是在执行过程中状态位改了,那你想办法再task结束以后将task执行的操作回滚就可以了,比如你是插入记录,那就把记录再删了。 大概就是这种思路,如果你在程序上解决不了的问题,就想办法在程序设计上解决。
  • 打赏
  • 举报
回复
timer的cancel和scheduler的shutdown都能满足任务的。
临碣 2013-12-31
  • 打赏
  • 举报
回复
实在不行,定时任务放线程里,要搞掉的时候interrupted一下

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧