Wenn http2 in okhttp verwendet wird, warum haben mehrere Anforderungen an denselben Host nicht nur eine Verbindung verwendet

Ich möchte die http2-Funktion von okhttp testen. Und ich stelle mehrere Anforderungen an denselben Host im asynchronen Stil. Aber ich habe festgestellt, dass es sich um mehrere Verbindungen handelt, da das Protokoll h2 ist. Es sollte nur eine Verbindung verwenden, oder? Der Code ist unten. Ah, ich benutze okhttp2.5

public class Performance {
    private final OkHttpClient client = new OkHttpClient();
    private final Dispatcher dispatcher = new Dispatcher();
    private final int times = 20;

    public Performance(){
        dispatcher.setMaxRequestsPerHost(2);
        client.setDispatcher(dispatcher);

        // Configure the sslContext
        // MySSLSocketFactory mySSLSocketFactory = new MySSLSocketFactory();
        // client.setSslSocketFactory(mySSLSocketFactory);
        // client.setHostnameVerifier(new HostnameVerifier() {
        //     public boolean verify(String s, SSLSession sslSession) {
        //         return true;
        //     }
        // });
    }
    public void run()throws Exception{
        for(int i=0; i<times; i++) {
            Request request = new Request.Builder()
                .url("https://http2bin.org/delay/1")
                .build();
            client.newCall(request).enqueue(new Callback() {
                public void onFailure(Request request, IOException e) {
                    e.printStackTrace();
                }

                public void onResponse(Response response) throws IOException {
                    System.out.println(response.headers().get("OkHttp-Selected-Protocol"));
                }
            });
        }
    }
    public static void main(String[] args)throws Exception{
        Performance performance = new Performance();
        performance.run();
    }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage