posted 19 years ago
There is quite a bit of complicated work involved in setting up a new thread. The start() method does all that tricky stuff, and then calls run(). When run returns, the start() method tears down the thread. We can happily ignore most of what start() does aside from calling run() on a new thread.
The run method is sometimes used other ways, which may or may not seem exactly "right" to everyone. For example, a thread pool or Timer works with Runnable objects and calls the run() method, but does not set up or tear down new threads for every run.
You could of course call the run method from another object yourself. The code would execute on the same thread as the caller, which is probably not what anybody wants. That just points out that there is no magic in run(). The hard work is out of sight in start().
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi