Java-программа продолжает работать после метода OkHttp - PullRequest
0 голосов
/ 21 сентября 2018

Я переключаюсь на 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.Есть идеи, почему программа не заканчивается?

...