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?

Original source