如何在退出时java处理运行线程?

Scu*_*eve 4 java multithreading

所以我正在为学校编写一个简单的服务器 - 客户端程序.客户端发送命令和一些参数,服务器返回一个答案.

服务器将侦听新连接,并为每个新客户端连接创建一个线程.服务器侦听器也是由main启动的独立线程.

服务器端Main等待用户输入,并在收到适当的输入时退出.

就目前而言,服务器侦听器在一个循环中运行

while(true)
{
 ...
}
Run Code Online (Sandbox Code Playgroud)

因此,当main到达程序的末尾然后退出时,它会杀死所有正在运行的线程吗?或者它会等待他们完成运行?

如果是后一种情况,我可以调用某种方法,如果系统试图退出,它将返回true吗?

请记住,每个组件都是它自己的类的一部分.

NPE*_*NPE 10

有两种类型的线程:守护进程用户.主线程始终是用户线程.

只要存在至少一个用户线程,该进程就会保持活动状态.当所有用户线程终止时,所有守护程序线程都将被终止,并且进程终止.

要设置线程的守护程序状态,可以setDaemon()在启动线程之前调用.

因此,当main到达程序的末尾然后退出时,它会杀死所有正在运行的线程吗?或者它会等待他们完成运行?

如果它是一个守护程序线程,它最终会被杀死.如果它是用户线程,只要线程继续运行,该进程就会保持活动状态.