It might not make any sense in your inheritance hierarchies to extend Thread. Only extend Thread if you wish to modify the functionality of Threads.
With Runnable, any class in any inheritance hierarchy can expose a task that can be seen as a unit of work to have a Thread perform.