I read this statement:
The main thread must be the last thread to finish execution. When the main thread stops, the program terminates.
Is it true?
I also came to know " Even if the main thread dies program keep running".
As far as my understanding: When you start a program, JVM creates one thread to run your program. The JVM creates one user thread for running a program. This thread is called main thread. The main method of the class is called from the main thread. If program spawns new threads from the main thread, it does stop until last thread dies.
Which one is true?
解决方案
Program terminates when all non-daemon threads die (daemon thread is a thread marked with setDaemon(true); it's usually used for utility threads). From javadoc:
When a Java Virtual Machine starts up, there is usually a single non-daemon thread (which typically calls the method named main of some designated class). The Java Virtual Machine continues to execute threads until either of the following occurs:
The exit method of class Runtime has been called and the security manager has permitted the exit operation to take place.
All threads that are not daemon threads have died, either by returning from the call to the run method or by throwing an exception that propagates beyond the run method.