diff --git a/jetty-load-generator-client/src/main/java/org/mortbay/jetty/load/generator/LoadGenerator.java b/jetty-load-generator-client/src/main/java/org/mortbay/jetty/load/generator/LoadGenerator.java index ba7078cf..fc9b2ebf 100644 --- a/jetty-load-generator-client/src/main/java/org/mortbay/jetty/load/generator/LoadGenerator.java +++ b/jetty-load-generator-client/src/main/java/org/mortbay/jetty/load/generator/LoadGenerator.java @@ -34,6 +34,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.LockSupport; import java.util.function.Supplier; @@ -115,6 +116,7 @@ public static Builder builder() { return new Builder(); } + private final AtomicInteger threadIds = new AtomicInteger(); private final Config config; private final CyclicBarrier barrier; private ExecutorService executorService; @@ -142,20 +144,25 @@ private CompletableFuture spawn() { @Override protected void doStart() throws Exception { - executorService = Executors.newCachedThreadPool(); + executorService = Executors.newCachedThreadPool(this::newThread); interrupted = false; super.doStart(); } + private Thread newThread(Runnable job) { + return new Thread(job, String.format("%s@%x-sender-%d", getClass().getSimpleName(), hashCode(), threadIds.getAndIncrement())); + } + private void halt() { LifeCycle.stop(this); } @Override protected void doStop() throws Exception { - super.doStop(); interrupt(); executorService.shutdown(); + threadIds.set(0); + super.doStop(); } /**