瀏覽代碼

waitting for running thread shutdown before callback thread toStop

WEIZIBIN 6 年之前
父節點
當前提交
4e8e049a7b
共有 1 個文件被更改,包括 14 次插入0 次删除
  1. 14 0
      xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java

+ 14 - 0
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java

@@ -86,6 +86,11 @@ public class XxlJobExecutor  {
         initRpcProvider(ip, port, appName, accessToken);
     }
     public void destroy(){
+        List<JobThread> runningThreads = new ArrayList<>(jobThreadRepository.values());
+        if (logger.isInfoEnabled()) {
+            logger.info("running threads {}", runningThreads);
+        }
+
         // destory jobThreadRepository
         if (jobThreadRepository.size() > 0) {
             for (Map.Entry<Integer, JobThread> item: jobThreadRepository.entrySet()) {
@@ -95,6 +100,15 @@ public class XxlJobExecutor  {
         }
         jobHandlerRepository.clear();
 
+        for (JobThread runningThread : runningThreads) {
+            try {
+                // wait for all job thread push result to callback queue
+                runningThread.join();
+            } catch (InterruptedException e) {
+                logger.warn("interrupted while stopping {}", runningThread);
+                break;
+            }
+        }
 
         // destory JobLogFileCleanThread
         JobLogFileCleanThread.getInstance().toStop();