views:

149

answers:

2

Hi, I am just wondering. Do I need to call System.exit(0); right before main method of a Java command line application ends? If so, why? What is the difference from letting it exit on its own, if I would just always put there 0? What is not cleaned up?

Thanks in advance.

+2  A: 

No need to call System.exit(), just return from main(). This is the normal idiom for exiting from a Java program.

System.exit() is usually called to terminate an app in the middle of things (which usually means abnormal termination due to a fatal error).

Péter Török
+13  A: 

No! You do not always need to call System.exit(0) to end a java program. If there is no non-daemon thread spawned by your code, the application will terminate automatically upon finishing your main thread task.

If your main method results in spawning some non-daemon thread which are still alive doing some processing while your main method has reached the end, then the application will not be terminated until those threads complete. In this case, if you explicitly call System.exit(0), then application will terminate immediately killing all your threads.

Please refer javadoc of Thread which mentions the details.

Gopi