[concurrency-interest] ThreadFactory.newThread(Runnable) and user-defined Runnables?

borderline_ocd-er javafreelancer at gmail.com
Mon Dec 15 16:12:03 EST 2008


thanks to everybody who replied,

what a dolt i am! i see where i went wrong now. oh well, everybody
make mistrakes... ;¬)

many thanks

On Mon, Dec 15, 2008 at 6:39 PM, borderline_ocd-er
<javafreelancer at gmail.com> wrote:
> using jdk 1.6.0_04 on win xp/sp 3.
>
> given this implementation of Runnable:
>
> abstract class NamedRunnable implements Runnable{
>
>        private String name;
>
>        public NamedRunnable(String name){
>                this.name = name;
>        }
>
>        protected String getName(){
>                return this.name;
>        }
>
> }
>
>
> how come neither the compiler nor the runtime have a problem with
> either of these uses of NamedRunnable as a legal Runnable
> implementation :
>
>
>                Collection<Callable<Object>> tasks = new ArrayList<Callable<Object>>();
>
>                tasks.add(Executors.callable(new NamedRunnable("Thread X"){
>                        public void run(){...this.getName();...}
>                }));
>
>
>                Thread thread1 = new Thread(new NamedRunnable("Thread Y"){
>                        public void run(){...this.getName();...}
>                });
>
> but the compiler complains about this:
>
>   class NamingThreadFactory implements ThreadFactory {
>
>      public Thread newThread(NamedRunnable runnable){
>              return new Thread(runnable);
>      }
>   }
>
> with the message: "The type NamingThreadFactory must implement the
> inherited abstract method ThreadFactory.newThread(Runnable)"
>
> that is, as far as the "Executors.callable(Runnable)" utility method
> and the "Thread(Runnable)" constructor are concerned, NamedRunnable is
> a legal implementation of Runnable. why does
> "ThreadFactory.newThread(Runnable)" disagree?
>
> thanks in advance for your reply.
>



More information about the Concurrency-interest mailing list