From 3b89ac7cf0c818ef5138f88a8131767041c6deff Mon Sep 17 00:00:00 2001 From: Dmitriy Dumanskiy Date: Mon, 19 Apr 2021 14:56:16 +0300 Subject: [PATCH] Use ThreadLocalRandom instead of Math.random() (#11165) Motivation: `ThreadLocalRandom` doesn't cause contention. Also `nextInt()` generates only 4 random bytes while `Math.random()` generates 8 bytes. Modification: Replaced `(int) Math.random()` with `PlatformDependent.threadLocalRandom().nextInt()` Result: No possible contention when random numbers for WebSockets. --- .../handler/codec/http/websocketx/WebSocket08FrameEncoder.java | 3 ++- .../codec/http/websocketx/WebSocketClientHandshaker00.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket08FrameEncoder.java b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket08FrameEncoder.java index e63f838932..7ae83c35e6 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket08FrameEncoder.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/websocketx/WebSocket08FrameEncoder.java @@ -57,6 +57,7 @@ import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToMessageEncoder; import io.netty.handler.codec.TooLongFrameException; +import io.netty.util.internal.PlatformDependent; import io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory; @@ -178,7 +179,7 @@ public class WebSocket08FrameEncoder extends MessageToMessageEncoder