package com.limegroup.gnutella.util; import com.limegroup.gnutella.ErrorService; /** Contains a global ThreadPool & methods for adding named threads to it. */ public class ThreadFactory { private static final ThreadFactory INSTANCE = new ThreadFactory(); // create an unmanaged ThreadPool -- we'll manage it ourselves. private final ThreadPool POOL = new DefaultThreadPool("IdleThread", false); public static void startThread(final Runnable runner, final String name) { INSTANCE.POOL.invokeLater(new Runnable() { public void run() { try { Thread.currentThread().setName(name); runner.run(); } catch(Throwable t) { // must handle ErrorService internally, // otherwise the thread name will be lost. ErrorService.error(t); } finally { Thread.currentThread().setName("IdleThread"); } } }); } }