Use System.exit with care

System.exit should be used with care. The normal method of terminating a program is to terminate all user threads.

Cases in which System.exit is appropriate:

JFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
From Oracles's Portability Cookbook:

"The System.exit method forces termination of all threads in the Java virtual machine. This is drastic....System.exit should be reserved for a catastrophic error exit, or for cases when a program is intended for use as a utility in a command script that may depend on the program's exit code."

See Also :
Launch thread is just another user thread