Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

End Java command line application properly

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.

like image 515
Trimack Avatar asked Sep 17 '10 08:09

Trimack


2 Answers

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.

like image 76
Gopi Avatar answered Sep 30 '22 20:09

Gopi


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).

like image 38
Péter Török Avatar answered Sep 30 '22 18:09

Péter Török