package org.kapott.hbci.concurrent; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicLong; /** * Implementierung einer {@link ThreadFactory}, die f�r jeden Thread eine eigene Thread-Gruppe erzeugt. * Jede Gruppe ist mit {@link ThreadGroup#setDaemon(true)} konfiguriert, so dass mit Ende des einzelnen * Threads auch automatisch die Gruppe geschlossen wird. * * @see <code>README.MultiThreading</code> * @see <a href="https://groups.google.com/forum/#!msg/hbci4java/cOQrbPDC0Jo/rbm6jgMaMfcJ">https://groups.google.com/forum/#!msg/hbci4java/cOQrbPDC0Jo/rbm6jgMaMfcJ</a> * @author Hendrik Schnepel */ public class HBCIThreadFactory implements ThreadFactory { private static final AtomicLong SEQUENCE = new AtomicLong(0L); @Override public Thread newThread(Runnable runnable) { String id = String.valueOf(SEQUENCE.incrementAndGet()); ThreadGroup threadGroup = new ThreadGroup("HBCI Single-Thread Group #" + id); // Wichtig, damit die Gruppe zusammen mit dem Thread geschlossen wird: // https://groups.google.com/forum/#!msg/hbci4java/cOQrbPDC0Jo/rbm6jgMaMfcJ threadGroup.setDaemon(true); return new Thread(threadGroup, runnable, "HBCI Thread #" + id); } }