我需要在一个定时任务中,执行大量的接口请求。所以我单独开了多个线程,去执行接口请求数据。
接口请求用的是okhttp3, 执行没有问题,但是当tomcat关闭时,会报错OkHttp ConnectionPool无法关闭。
我写了一个TEST,来模拟我的定时任务业务请求。
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)]