From 3db5e66a8ef27cc9f9c2c405f18b30221749d5e6 Mon Sep 17 00:00:00 2001 From: mrhbj <1825636423@qq.com> Date: Sat, 4 Dec 2021 03:28:48 +0800 Subject: [PATCH] =?UTF-8?q?[Issue=20#3556]=EF=BC=9AOptimization:=20In=20th?= =?UTF-8?q?e=20case=20of=20high=20concurrency=EF=BC=8CThreadLocalRandom=20?= =?UTF-8?q?is=20better=20than=20Random?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/client/impl/producer/DefaultMQProducerImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/src/main/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerImpl.java b/client/src/main/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerImpl.java index 2a784b55cbd..70b80451d60 100644 --- a/client/src/main/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerImpl.java +++ b/client/src/main/java/org/apache/rocketmq/client/impl/producer/DefaultMQProducerImpl.java @@ -36,6 +36,8 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; + +import io.netty.util.internal.ThreadLocalRandom; import org.apache.rocketmq.client.QueryResult; import org.apache.rocketmq.client.Validators; import org.apache.rocketmq.client.common.ClientErrorCode; @@ -97,7 +99,6 @@ public class DefaultMQProducerImpl implements MQProducerInner { private final InternalLogger log = ClientLogger.getLog(); - private final Random random = new Random(); private final DefaultMQProducer defaultMQProducer; private final ConcurrentMap topicPublishInfoTable = new ConcurrentHashMap(); @@ -572,7 +573,7 @@ private SendResult sendDefaultImpl( ) throws MQClientException, RemotingException, MQBrokerException, InterruptedException { this.makeSureStateOK(); Validators.checkMessage(msg, this.defaultMQProducer); - final long invokeID = random.nextLong(); + final long invokeID = ThreadLocalRandom.current().nextLong(); long beginTimestampFirst = System.currentTimeMillis(); long beginTimestampPrev = beginTimestampFirst; long endTimestamp = beginTimestampFirst;