Right! My question was going to be "what's wrong with
the names they have?"
A Runnable can always change the name if security
permits, but should set it back again unless you're sure every submitted
Runnable manages the name itself.
David Holmes
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
|