Will a program exit when the main thread exits?
java
Solution
No.
Java programs terminate when all non-daemon threads finish.
The documentation states:
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.
If you don't want the runtime to wait for a thread, call the `setDaemon` method.
Problem
I have two threads: the main thread and a thread started from the main thread. When the main thread exits, will the whole program terminate?