/* * $Id$ * * Copyright (c) 2010 by Joel Uckelman * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License (LGPL) as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, copies are available * at http://www.opensource.org. */ package VASSAL.tools.concurrent; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; /** * A thread factory which creates daemon threads. Running daemon threads, * unlike regular threads, do not prevent the application from shutting down. * * @since 3.2.0 * @author Joel Uckelman */ public class DaemonThreadFactory implements ThreadFactory { protected final AtomicInteger id = new AtomicInteger(0); protected final String basename; /** * Creates a thread factory. * * @param basename the base name to use for threads created by this factory */ public DaemonThreadFactory(String basename) { this.basename = basename; } /** {@inheritDoc} */ public Thread newThread(Runnable r) { final String name = basename + "-" + id.getAndIncrement(); final Thread t = new Thread(r, name); t.setDaemon(true); return t; } }