我正在使用Java 8和api请求开发JavaFX应用程序我正在使用转换器2.1.0和converter-gson 2.1.0。
如果我发出同步请求:
Patient p = Core.api.getPatient(2).execute().body();
一切正常,但如果我使用异步版本:
Core.api.getPatient(2).enqueue(new Callback<Patient>() {
@Override
public void onResponse(Call<Patient> call, Response<Patient> response) {
System.out.println("DONE");
}
@Override
public void onFailure(Call<Patient> call, Throwable t) {
// Nothing
}
});
一切也正常(它打印&#34; DONE&#34;)。但是,当我使用标准JavaFX调用Platform.exit()
退出应用程序时,UI关闭但应用程序仍然打开,并且只会在大约40秒后退出。
如果我只是做System.exit(0)
一切正常,我猜这可能是一些线程问题,但我不确定。
任何人都知道可能出现的问题?
修改:
我发现在执行Platform.exit()
几个线程后,RMI TCP Connection(2)
这样的名称保持交替并使用100%的CPU。
答案 0 :(得分:0)
OkHttp使用两个线程池,在使用后保持线程活动60秒。您可以通过在调度程序的执行程序上调用shutdown并在连接池上调用evictAll来强制关闭它们。