When you extend the Thread class to create your custom Thread class, you also implement a run() method which will be invoked when the thread gets started. Since you extend Thread class, you won't be able to extend any other class. Therefore, this approach has the least flexibility for coders.