Neha, it is very simple.
When you call run() directly it does not create a new thread. Calling start() only creates a new thread.
So in the code below you start a new thread with name T1. Then:
new A().run();---just calls run(), no new thread
new Thread(new A(),"T2").run();---just calls run(), no new thread
new Thread(new A(),"T3").start();-----creates a new thread with name T3
Hope i'm able to provide some meaningfool
explanation.
regards,
Gitesh