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

时间:2012-11-25 07:37:57

标签: java multithreading

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

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

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

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

while(true)
{
 ...
}

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

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

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

1 个答案:

答案 0 :(得分:10)

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

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

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

  

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

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