stop() will stop a thread, but it's potentially dangerous, as it can leave some data in an indeterminate state (for instance, it can leave a double value half-modified.) System.exit() will stop all threads and exit the application; kind of drastic. The best way to stop a thread is for the thread to expect to be stopped; it can check a flag or condition periodically, and if that condition is changed, then it can stop. yield() is not an especially useful method these days. It asks the JVM to allow another thread of the same or higher priority to run, if there are any runnable threads of the same or higher priority. The earliest JVMs didn't use any kind of time-slicing to schedule threads; modern ones generally do, so yield() won't have much of an effect.