A few factual updates for Java multi-threading:
1. java.lang.Thread is not an abstract class. It is a concrete class that can be subclassed to provide multi-threading.
2. Another way to do multi-threading is to implement the java.lang.Runnable interface. Then you pass the object to a new instance of Thread.
Check the docs here: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html