On 10/26/06, Kevin Condon <conivek@xxxxxxxxx> wrote:
Hi Mike,
We use a slightly more nuanced ThreadFactory to give unique names to
each thread.
The default ThreadFactory in j.u.c does this, too.
I think Mike was distinguishing a different name for each thread in the pool (which you get by default) vs. a different name for each Runnable adopted by the pool thread
when it runs that Runnable
.
The latter is at odds with decoupling the work to be done from the execution policy that determines which thread does what work. The only justification I can see for it is in debugging or monitoring, but even then I think there are better solutions,
e.g., notify the monitoring agent of pre/post-run() events using the task identity and thread name instead of setting the thread name from the task identity.
--tim
On 10/26/06, Mike Quilleash <mike.quilleash@xxxxxxxxxxxxxx> wrote:
> 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@xxxxxxxxx]
> Sent: 26 October 2006 14:05
> To: Mike Quilleash
> Cc: David Harrigan; concurrency-interest@xxxxxxxxxxxxx
> 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@xxxxxxxxxxxxxx> 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@xxxxxxxxxxxxx
> > [mailto:concurrency-interest-bounces@xxxxxxxxxxxxx] On Behalf Of David
>
> > Harrigan
> > Sent: 26 October 2006 13:13
> > To: concurrency-interest@xxxxxxxxxxxxx
> > 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@xxxxxxxxxxxxxxxxxxxx
> >
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@xxxxxxxxxxxxxxxxxxxx
> > 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@xxxxxxxxxxxxxxxxxxxx
http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest
_______________________________________________
Concurrency-interest mailing list
Concurrency-interest@xxxxxxxxxxxxxxxxxxxx
http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest
|