XXLJOB终止定时任务的犯二小故事

Posted windghost

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XXLJOB终止定时任务的犯二小故事相关的知识,希望对你有一定的参考价值。

xxljob中终止定时任务的方式是通过Thread.interrupt()+处理中断异常的方式强制终止任务的。所以单纯的线程只要进行阻塞操作就可以实现终止。

但是代码里已经遍布了ThreadPoolExecutor创建出来的线程池,尝试各种方式线程内部都不能感受到外部线程的interrupt,尝试了多次无果。

 

今天忽然想明白了,在外部线程中等待线程池执行完成的地方,处理线程的终止异常,抛出异常给xxljob进行捕获同时,调用线程池的shutdownNow()方法即可。

由于shutdownNow()的实现方式实际还是Thread.interrupt(),所以只要线程内部在合适的地方加上Thread.sleep(x)即可。

 

以上是关于XXLJOB终止定时任务的犯二小故事的主要内容,如果未能解决你的问题,请参考以下文章

分布式定时任务XxlJob用法及核心调度源码详解

XxlJob 分布式定时任务XxlJob用法及核心调度源码详解

发现mariadb数据库时间晚了12个小时,xxljob定时任务调度异常

springcloud技术栈系列4:分布式定时任务

Oracle 定时任务job实际应用

【基建—xxl-job定时任务平台】