diff --git a/src/main/java/org/redkale/net/client/ClientAddress.java b/src/main/java/org/redkale/net/client/ClientAddress.java index 0cb7f46b5..da7cdf120 100644 --- a/src/main/java/org/redkale/net/client/ClientAddress.java +++ b/src/main/java/org/redkale/net/client/ClientAddress.java @@ -54,7 +54,8 @@ public class ClientAddress implements java.io.Serializable { public CompletableFuture createClient(final boolean tcp, final AsyncGroup group, int readTimeoutSeconds, int writeTimeoutSeconds) { SocketAddress addr = address; if (addr == null) { - if (this.addresses == null) { + SocketAddress[] addrs = this.addresses; + if (addrs == null) { synchronized (this) { if (this.addresses == null) { int size = 0; @@ -70,11 +71,11 @@ public class ClientAddress implements java.io.Serializable { newAddrs[++index] = w.getAddress(); } } + addrs = newAddrs; this.addresses = newAddrs; } } } - SocketAddress[] addrs = addresses; addr = addrs[ThreadLocalRandom.current().nextInt(addrs.length)]; } return group.createClient(tcp, addr, readTimeoutSeconds, writeTimeoutSeconds);