View Javadoc

1   package com.atlassian.messagequeue.internal.core;
2   
3   import java.util.concurrent.ThreadFactory;
4   import java.util.concurrent.atomic.AtomicInteger;
5   
6   /**
7    * Thread factory.
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  }