XXLJOB終止定時任務的犯二小故事


xxljob中終止定時任務的方式是通過Thread.interrupt()+處理中斷異常的方式強制終止任務的。所以單純的線程只要進行阻塞操作就可以實現終止。

但是代碼里已經遍布了ThreadPoolExecutor創建出來的線程池,嘗試各種方式線程內部都不能感受到外部線程的interrupt,嘗試了多次無果。

 

今天忽然想明白了,在外部線程中等待線程池執行完成的地方,處理線程的終止異常,拋出異常給xxljob進行捕獲同時,調用線程池的shutdownNow()方法即可。

由於shutdownNow()的實現方式實際還是Thread.interrupt(),所以只要線程內部在合適的地方加上Thread.sleep(x)即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM