A thread can stop executing if the program exits, if it's explicitly stopped with Thread.stop(), or if it is yielded to a higher priority thread. However, there is no halt method in the Thread class (which is why it fails to cause a thread to stop executing). Runtime.getRuntime().halt() exits the JVM, but it is not a method on Thread.