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

Mike Quilleash mike.quilleash at subexazure.com
Thu Oct 26 09:16:29 EDT 2006


This is simpler if you just need a single name for all threads in the
pool.  My requirement at the time was for a different name per runnable
so I had to do it differently.

Cheers. 

-----Original Message-----
From: Kevin Condon [mailto:conivek at gmail.com] 
Sent: 26 October 2006 14:05
To: Mike Quilleash 
Cc: David Harrigan; concurrency-interest at cs.oswego.edu
Subject: Re: [concurrency-interest] Setting a Thread name in a
ThreadPool

You can use:

ThreadFactory factory = new ThreadFactory() {
  public Thread newThread(Runnable r) {
    return new Thread(r, "threadname");
  }
};
Executors.newCachedThreadPool(factory);

Kevin

On 10/26/06, Mike Quilleash <mike.quilleash at subexazure.com> wrote:
> I asked the same question a while back.  The solution for me was to 
> wrap up whatever you are submitting to the executor with a Runnable.
>
> Something like
>
> Public class ThreadRenameWrapper implements Runnable {  private final 
> String name;  private final Runnable runnable;
>
>  public ThreadRenameWrapper( String name, Runnable runnable )  {
>    this.name = name;
>    this.runnable = runnable;
>  }
>
>  public void run()
>  {
>    Thread thread = Thread.currentThread();
>    String oldName = thread.getName();
>
>    thread.setName( name );
>    try
>    {
>      runnable.run();
>    }
>    finally
>    {
>      thread.setName( oldName );
>    }
>  }
> }
>
> HTH.
>
> -----Original Message-----
> From: concurrency-interest-bounces at cs.oswego.edu
> [mailto:concurrency-interest-bounces at cs.oswego.edu] On Behalf Of David

> Harrigan
> Sent: 26 October 2006 13:13
> To: concurrency-interest at cs.oswego.edu
> Subject: [concurrency-interest] Setting a Thread name in a ThreadPool
>
>
> Hi,
>
> 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?
>
> -=david=-
> --
> View this message in context:
> http://www.nabble.com/Setting-a-Thread-name-in-a-ThreadPool-tf2513566.
> ht
> ml#a7009924
> Sent from the JSR166 Concurrency mailing list archive at Nabble.com.
>
> _______________________________________________
> Concurrency-interest mailing list
> Concurrency-interest at altair.cs.oswego.edu
> http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest
>
>
>  This e-mail is bound by the terms and conditions described at 
> http://www.subexazure.com/mail-disclaimer.html
>
>
> _______________________________________________
> Concurrency-interest mailing list
> Concurrency-interest at altair.cs.oswego.edu
> http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest
>


 This e-mail is bound by the terms and conditions described at http://www.subexazure.com/mail-disclaimer.html




More information about the Concurrency-interest mailing list