In most cases you would implement the runnable interface. To extend from the Thread class means you cannot extend from any other classes, so if your design changes ... good luck
Also, by extending Thread when all you really want is for the code to run in a separate thread is excessive. You are inheriting all the members of the Thread class. Ask yourself, do you really need them?
In summary, implement Runnable except in those rare cases you need the extra functionality of the Thread class.