diff --git a/common/src/main/java/io/seata/common/thread/NamedThreadFactory.java b/common/src/main/java/io/seata/common/thread/NamedThreadFactory.java index fad15dfe1c8..2141b7b75a4 100644 --- a/common/src/main/java/io/seata/common/thread/NamedThreadFactory.java +++ b/common/src/main/java/io/seata/common/thread/NamedThreadFactory.java @@ -15,6 +15,8 @@ */ package io.seata.common.thread; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; @@ -24,9 +26,10 @@ * The type Named thread factory. * * @author jimin.jm @alibaba-inc.com - * @date 2018 /9/12 + * @author ggndnn */ public class NamedThreadFactory implements ThreadFactory { + private final static Map PREFIX_COUNTER = new ConcurrentHashMap<>(); private final AtomicInteger counter = new AtomicInteger(0); private final String prefix; private final int totalSize; @@ -40,7 +43,9 @@ public class NamedThreadFactory implements ThreadFactory { * @param makeDaemons the make daemons */ public NamedThreadFactory(String prefix, int totalSize, boolean makeDaemons) { - this.prefix = prefix; + PREFIX_COUNTER.putIfAbsent(prefix, new AtomicInteger(0)); + int prefixCounter = PREFIX_COUNTER.get(prefix).incrementAndGet(); + this.prefix = prefix + "_" + prefixCounter; this.makeDaemons = makeDaemons; this.totalSize = totalSize; }