[concurrency-interest] Setting a Thread name in a ThreadPool

Holger Hoffstätte holger at wizards.de
Thu Oct 26 08:56:39 EDT 2006


David Harrigan wrote:
> Previously, if I wanted to set a thread name, I could so something like
> this:
> 
> new Thread(new RunnableTask(), "DoSomethingWonderfulThread").start();
> 
> now, if I'm delgating over to an Executors, like
> Executors.newCachedThreadPool(), and using that to execute my thread:
> 
> ExecutorService s = Executors.newCachedThreadPool();
> s.execute(new RunnableTask());
> 
> The execute method isn't overloaded to provide a name, so, how do I go about
> setting the Thread name? 

You implement the ThreadFactory interface to generate named threads and
plug that into the ExecutorService via setThreadFactory().

public class NamedThreadFactory implements ThreadFactory
{
..
    public Thread newThread(Runnable runnable)
    {
        return new Thread(runnable, this.createNewName());
    }
..
}

-h


More information about the Concurrency-interest mailing list