Thread, as it comes, implements Runnable and I believe has an empty run() method to satisfy the override required to implement Runnable. In the problem you show, MyThread3 has a run() method which overrides the run method that it's superclass Thread defined.
When it comes to the Thread creation to start a new thread, you instantiate a Thread you pass a reference to a Runnable. Since all threads implement Runnable, they pass the IS-A test, so you can pass a Thread to another thread. In this case, the run() that will be called when the thread starts is the override version defined in MyThread3().
This may sound a little confusing but read it a couple of times and let it sink in.
SCJP - 86% - June 11, 2009