Я переключаюсь на OkHttp в моих программах на Java, и ниже приведен соответствующий код
Это многопоточное приложение
public class MyApplication implements Runnable {
public static Integer numberOfThreads = 0;
public static Boolean useProxy = true;
@Override
public void run() {
try {
ThreadLocalManager.okHttp.set(new OkHttp());
String results = ThreadLocalManager.okHttp.get().test();
System.out.println("Done");
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class OkHttp {
volatile OkHttpClient okHttpClient;
public OkHttp() {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8888));
okHttpClient = new OkHttpClient.Builder().proxy(null).connectTimeout(5, TimeUnit.SECONDS)
.readTimeout(5, TimeUnit.SECONDS).writeTimeout(5, TimeUnit.SECONDS).build();
}
public String test() throws IOException {
String result = null;
RequestBody body = RequestBody.create(null, "test");
Request request = new Request.Builder().url("https://google.com").post(body).addHeader(":scheme", "https")
.addHeader("content-type", "application/x-www-form-urlencoded").addHeader("user-agent", "okhttp/3.8.1")
.build();
Response response = okHttpClient.newCall(request).execute();
result = response.body().string();
response.body().close();
return result;
}
}
Когда я запускаю вышеупомянутую программу, я вижу "Готово""в консоли, но программа продолжает работать.Это происходит только тогда, когда я вызываю метод test()
класса OkHttp
.Есть идеи, почему программа не заканчивается?