From 9ecb85eac1b85ccc69ff9621cfc30d2c2c9abf44 Mon Sep 17 00:00:00 2001 From: Conor Cleary Date: Wed, 30 Sep 2020 10:42:16 +0100 Subject: [PATCH 1/2] 8253179: Replace LinkedList Impl in net.http.Http2Connection --- .../share/classes/jdk/internal/net/http/Http2Connection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java b/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java index f7e6117c7c048..affa24b33fce8 100644 --- a/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java +++ b/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java @@ -700,7 +700,7 @@ void shutdown(Throwable t) { Throwable initialCause = this.cause; if (initialCause == null) this.cause = t; client2.deleteConnection(this); - List> c = new LinkedList<>(streams.values()); + List> c = new ArrayList<>(streams.values()); for (Stream s : c) { try { s.connectionClosing(t); From fc3f574d485fbdbcb4f6de53bab5fdc8aa78d0ba Mon Sep 17 00:00:00 2001 From: Conor Cleary Date: Thu, 1 Oct 2020 16:58:00 +0100 Subject: [PATCH 2/2] 8253179: Removed ArrayList copy of streams --- .../classes/jdk/internal/net/http/Http2Connection.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java b/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java index affa24b33fce8..554e35449b92f 100644 --- a/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java +++ b/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java @@ -33,7 +33,6 @@ import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.Iterator; -import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Map; @@ -41,6 +40,7 @@ import java.util.concurrent.CompletableFuture; import java.util.ArrayList; import java.util.Objects; +import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.Flow; @@ -248,7 +248,7 @@ void markPrefaceSent() { //------------------------------------- final HttpConnection connection; private final Http2ClientImpl client2; - private final Map> streams = new ConcurrentHashMap<>(); + private final ConcurrentMap> streams = new ConcurrentHashMap<>(); private int nextstreamid; private int nextPushStream = 2; // actual stream ids are not allocated until the Headers frame is ready @@ -700,8 +700,7 @@ void shutdown(Throwable t) { Throwable initialCause = this.cause; if (initialCause == null) this.cause = t; client2.deleteConnection(this); - List> c = new ArrayList<>(streams.values()); - for (Stream s : c) { + for (Stream s : streams.values()) { try { s.connectionClosing(t); } catch (Throwable e) {