4

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

服务器将监听新的连接,并为每个新的客户端连接创建一个线程。服务器监听器也是一个独立的线程,由 main 发起。

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

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

while(true)
{
 ...
}

那么当 main 到达程序末尾并退出时,它会杀死所有正在运行的线程吗?还是会等待他们完成运行?

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

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

4

1 回答 1

10

有两种类型的线程:daemonuser。主线程始终是用户线程。

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

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

那么当 main 到达程序末尾并退出时,它会杀死所有正在运行的线程吗?还是会等待他们完成运行?

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

于 2012-11-25T07:39:31.117 回答