多线程定时任务,tomcat关闭时okhttp3无法关闭线程池

我需要在一个定时任务中,执行大量的接口请求。所以我单独开了多个线程,去执行接口请求数据。

接口请求用的是okhttp3, 执行没有问题,但是当tomcat关闭时,会报错OkHttp ConnectionPool无法关闭。

我写了一个TEST,来模拟我的定时任务业务请求。 

image.png

tomcat关闭时报错

14-Dec-2022 17:51:15.518 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[fukuwaraku]似乎启动了一个名为[OkHttp ConnectionPool]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[

[fukuwaraku] INFO  17:51:15 | websocket connection closed......usersystem

 java.lang.Object.wait(Native Method)

 java.lang.Object.wait(Object.java:460)

 okhttp3.ConnectionPool$1.run(ConnectionPool.java:65)

 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

 java.lang.Thread.run(Thread.java:745)]

14-Dec-2022 17:51:15.518 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[fukuwaraku]似乎启动了一个名为[OkHttp ConnectionPool]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[

 java.lang.Object.wait(Native Method)

 java.lang.Object.wait(Object.java:460)

 okhttp3.ConnectionPool$1.run(ConnectionPool.java:65)

 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

 java.lang.Thread.run(Thread.java:745)]

14-Dec-2022 17:51:15.518 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[fukuwaraku]似乎启动了一个名为[OkHttp ConnectionPool]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[

 java.lang.Object.wait(Native Method)

 java.lang.Object.wait(Object.java:460)

 okhttp3.ConnectionPool$1.run(ConnectionPool.java:65)

 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

 java.lang.Thread.run(Thread.java:745)]

14-Dec-2022 17:51:15.518 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[fukuwaraku]似乎启动了一个名为[OkHttp ConnectionPool]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[

 java.lang.Object.wait(Native Method)

 java.lang.Object.wait(Object.java:460)

 okhttp3.ConnectionPool$1.run(ConnectionPool.java:65)

 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

 java.lang.Thread.run(Thread.java:745)]

14-Dec-2022 17:51:15.518 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[fukuwaraku]似乎启动了一个名为[OkHttp ConnectionPool]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[

 java.lang.Object.wait(Native Method)

 java.lang.Object.wait(Object.java:460)

 okhttp3.ConnectionPool$1.run(ConnectionPool.java:65)

 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

 java.lang.Thread.run(Thread.java:745)]

14-Dec-2022 17:51:15.518 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[fukuwaraku]似乎启动了一个名为[Okio Watchdog]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[

 java.lang.Object.wait(Native Method)

 java.lang.Object.wait(Object.java:460)

 okio.AsyncTimeout.awaitTimeout(AsyncTimeout.java:323)

 okio.AsyncTimeout.access$000(AsyncTimeout.java:40)

 okio.AsyncTimeout$Watchdog.run(AsyncTimeout.java:286)]


评论区