Extending Thread class is more like extending the behavior of Thread.But we want to run a process within a separate thread , we do not want to extend / override the behavior of thread. So ideally its no correct also to extend thread.
The two options have subtly different meanings. If you extend Thread you say your class is a Thread, a thing that manages execution of a task on a separate thread. This is a pretty rare situation because the Thread class works pretty darned well as is. If you implement Runnable you say your class is a kind of task that can be run on a thread. This is much more likely the case, no?
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