1 package com.atlassian.messagequeue.internal.core;
2
3 import java.util.concurrent.ThreadFactory;
4 import java.util.concurrent.atomic.AtomicInteger;
5
6
7
8
9 public class DefaultThreadFactory implements ThreadFactory {
10 private final AtomicInteger counter = new AtomicInteger(1);
11 private final Thread.UncaughtExceptionHandler uncaughtExceptionHandler;
12 private String threadNameTemplate;
13
14 public DefaultThreadFactory(String threadNameTemplate, Thread.UncaughtExceptionHandler uncaughtExceptionHandler) {
15 this.uncaughtExceptionHandler = uncaughtExceptionHandler;
16 this.threadNameTemplate = threadNameTemplate;
17 }
18
19 @Override
20 public Thread newThread(Runnable runnable) {
21 final String name = String.format(threadNameTemplate, counter.getAndIncrement());
22 final Thread thread = new Thread(runnable, name);
23 thread.setUncaughtExceptionHandler(uncaughtExceptionHandler);
24 return thread;
25 }
26 }