1
15
16 package software.amazon.awssdk.utils;
17
18 import java.util.concurrent.ThreadFactory;
19 import java.util.concurrent.atomic.AtomicInteger;
20 import software.amazon.awssdk.annotations.SdkProtectedApi;
21
22
25 @SdkProtectedApi
26 public class NamedThreadFactory implements ThreadFactory {
27 private final ThreadFactory delegate;
28 private final String namePrefix;
29 private final AtomicInteger threadCount = new AtomicInteger(0);
30
31 public NamedThreadFactory(ThreadFactory delegate, String namePrefix) {
32 this.delegate = Validate.notNull(delegate, "delegate must not be null");
33 this.namePrefix = Validate.notBlank(namePrefix, "namePrefix must not be blank");
34 }
35
36 @Override
37 public Thread newThread(Runnable runnable) {
38 Thread thread = delegate.newThread(runnable);
39 thread.setName(namePrefix + "-" + threadCount.getAndIncrement());
40 return thread;
41 }
42 }
43