JVM завершит работу, когда основной поток и все потоки, не являющиеся демонами, завершат выполнение.
Когда вы создаете новый поток, вы можете вызвать Thread.setDaemon(true)
, чтобы сделать его потоком демона. Если вы сделаете это, то JVM не будет ждать, пока этот поток не завершится, перед выполнением. Это полезно для любых создаваемых вами потоков, которые запускаются в фоновом режиме до тех пор, пока программа не остановится.
Если вы создаете новый поток и не вызываете Thread.setDaemon(true)
, JVM задержит выход до завершения этого потока, даже если основной поток завершен.