There are different states for thread 1. New 2. Runnable 3. Running 4. Dead 5. Blocked / Waiting.
A thread is in New state, when it is just instantiated. to put into Runnable state, start() method should be invoked. Now thread goes into its Running mode, when JVM decides it to run (again JVM specific). Now such a runnign thread can be moved from Running to the Runnable state by following ways - 1. Sleep - for specific time 2. Wait - on the mercy of other threads to notify 3. Blcoked for any I/O Expception
Once the run() method gets over, a thread can not be made Live again. It would throw an exception.