package org.jboss.pitbull.internal.nio.socket;
import org.jboss.pitbull.internal.logging.Logger;
import java.util.concurrent.ThreadFactory;
/**
* Closes threadlocal selector on thread exit
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class ExecutorThreadFactory implements ThreadFactory
{
public static final ExecutorThreadFactory singleton = new ExecutorThreadFactory();
protected static final Logger logger = Logger.getLogger(Worker.class);
@Override
public Thread newThread(Runnable runnable)
{
final Runnable run = runnable;
Runnable delegate = new Runnable()
{
@Override
public void run()
{
try
{
run.run();
}
finally
{
SelectorUtil.cleanupThreadSelector();
logger.trace("Cleaned up ThreadLocal selector");
}
}
};
return new Thread(delegate);
}
}