1) Extending the Thread class will make your class unable to extend other classes, because of the single inheritance feature in JAVA.
2) In an Object oriented aspect, the second method is more preferrable, because you extend a class when you want to make it different from it’s super class, and change it’s behavior(s) (Example???).
A Java Thread controls the main path of execution in an application. When you invoke the Java Virtual Machine with the java command, it creates an implicit thread in which to execute the main method. The Thread class provides a mechanism for the first thread to start-up other threads to run in parallel with it.
The Runnable interface defines a type of class that can be run by a thread. The only method it requires is run, which makes the interface very easy to fulfil by extending existing classes. A runnable class may have custom constructors and any number of other methods for configuration and manipulation.
By implementing Runnable rather than extending Thread, you minimize the amount of code that you might have to change .