所以我正在为学校写一个简单的服务器 - 客户端程序。客户端发送命令和一些参数,服务器返回一个答案。
服务器将侦听新连接,并为每个新客户端连接创建一个线程。服务器侦听器也是由main发起的独立线程。
服务器端Main等待用户输入,并在收到适当的输入时退出。
就目前而言,服务器侦听器在一个循环中运行
while(true)
{
...
}
因此,当main到达程序结束并退出时,它会杀死所有正在运行的线程吗?或者它会等待他们完成运行?
如果是后一种情况,我可以调用某种方法,如果系统试图退出,它将返回true吗?
请记住,每个组件都是它自己班级的一部分。
答案 0 :(得分:10)
有两种类型的线程:守护程序和用户。主线程始终是用户线程。
只要存在至少一个用户线程,该进程就会保持活动状态。当所有用户线程终止时,所有守护程序线程都将被终止,并且进程终止。
要设置线程的守护程序状态,可以在启动线程之前调用setDaemon()
。
因此,当main到达程序结束并退出时,它会杀死所有正在运行的线程吗?还是会等待他们完成运行?
如果它是一个守护程序线程,它最终会被杀死。如果它是用户线程,只要线程继续运行,该进程将保持活动状态。