First of all make it clear that we can call a run() method explicitly. But sun microsystem programmers have written a lots of code in start() method in native languauges for allocation of memory and for certain other important criteria.So they suggest using start() method for invoking a thread.If we are using run() method for invoking thread there might occur some problem with your code in the operating syatem environment.
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.
Doe, a deer, a female deer. Ray, a pockeful of sun. Me, a name, I call my tiny ad ...