After the second has elapsed, the thread becomes Runnable again and, if the processor becomes available, the thread begins running again. For each entrance into the Not Runnable state, there is a specific and distinct escape route that returns the thread to the Runnable state. An escape route works only for its corresponding entrance. For example, if a thread has been put to sleep, then the specified number of milliseconds must elapse before the thread becomes Runnable again. If a thread is waiting for a condition, then another object must notify the waiting thread of a change in condition by calling notify or notifyAll .
More information is available in Synchronizing Threads .
Rather, a thread arranges for its own death by having a run method that terminates naturally. A thread with this run method dies naturally when the loop completes and the run method exits. Let's look at how the Clock applet thread arranges for its own death. You might want to use this technique with your applets. When you leave the page, the application in which the applet is running calls the applet's stop method.