DaemonThreadFactory.java

  1. /*******************************************************************************
  2.  * Copyright 2013 André Rouél
  3.  *
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  *
  8.  *   http://www.apache.org/licenses/LICENSE-2.0
  9.  *
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  ******************************************************************************/
  16. package net.sf.uadetector.internal.util;

  17. import java.util.concurrent.ThreadFactory;

  18. import javax.annotation.Nonnull;

  19. import net.sf.qualitycheck.Check;

  20. /**
  21.  * Factory to create daemon threads that runs as a background process and do not blocks an application shutdown
  22.  */
  23. public final class DaemonThreadFactory implements ThreadFactory {

  24.     /**
  25.      * Name of a new thread
  26.      */
  27.     @Nonnull
  28.     private final String threadName;

  29.     /**
  30.      * Creates a new {@code DaemonThreadFactory} which creates itself threads with the specified name.
  31.      *
  32.      * @param threadName
  33.      *            name of a thread to be created
  34.      */
  35.     public DaemonThreadFactory(@Nonnull final String threadName) {
  36.         Check.notNull(threadName, "threadName");
  37.         Check.notEmpty(threadName.trim(), "threadName");
  38.         this.threadName = threadName;
  39.     }

  40.     @Override
  41.     public Thread newThread(@Nonnull final Runnable runnable) {
  42.         final Thread thread = new Thread(runnable);
  43.         thread.setName(threadName);
  44.         thread.setDaemon(true);
  45.         return thread;
  46.     }

  47. }