What is the main difference between extending the Thread class and implementing the Runnable interface?
Extending Thread allows multiple inheritance
Implementing Runnable allows multiple inheritance
Runnable is more memory-efficient
There is no practical difference