在设计一个基于Java的服务器应用时,服务器主线程负责监听客户端连接,并为每个连接创建一个新的线程处理客户端请求。如果希望这些客户端处理线程在服务器主线程正常退出时也能自动终止,以下哪种线程设置方式最为合适?
答案解析
A选项错误,服务器可能需要同时处理大量的客户端请求,每个线程都调用 join() 会导致服务器主线程阻塞,无法继续处理新的请求;且客户端线程不一定是同步退出的。B选项正确,守护线程会在所有非守护线程结束后自动终止,非常适合作为后台服务线程,避免资源泄漏。C选项错误,interrupt() 并不能保证线程立即终止,只是发送一个中断信号,需要线程内部代码配合才能正确处理,并且需要服务器记录所有的客户端线程来执行interrupt(),比较复杂;另外 interrupt() 并非优雅的线程终止方式。D选项错误,虽然可以通过标志位控制线程停止,但仍需要额外代码进行控制,并且没有利用守护线程的自动终止特性;如果服务器主线程强制停止,未处理的守护线程也会终止,与标志位无关。
正确答案:B