Page 1 of 1

About Question enthuware.ocpjp.v7.2.1291 :

Posted: Sun Jul 03, 2016 8:28 am
by homeric
I did not understand why it executes Pooler's run(). A new Threader() is passed to Pooler's run(Runnable r). Then super(r) calls run() of Thread class that executes Runnable's run(). Since Runnable r contains Threader object it should be printing 'In threader'.

Where am I going wrong?

Re: About Question enthuware.ocpjp.v7.2.1291 :

Posted: Sun Jul 03, 2016 9:11 am
by admin
Why do you think "then super(r) calls run() of Thread class"?

Re: About Question enthuware.ocpjp.v7.2.1291 :

Posted: Sun Jul 03, 2016 9:42 am
by homeric
Pooler extends Thread so call to super(r) will execute run(Runnable) of Thread.

Re: About Question enthuware.ocpjp.v7.2.1291 :

Posted: Sun Jul 03, 2016 9:50 am
by admin
Again, why do you think that super(r) will execute run(Runnable) at all? Thread's run is called when you start a thread, not when you create a thread.

Re: About Question enthuware.ocpjp.v7.2.1291 :

Posted: Sun Jul 03, 2016 9:59 am
by homeric
I got it now. Will h.start() call Pooler's run() method directly because h has been assigned a Pooler object?

Re: About Question enthuware.ocpjp.v7.2.1291 :

Posted: Sun Jul 03, 2016 10:46 am
by admin
That is correct. But go through the explanation again for more clarity.