【发布时间】:2011-12-06 19:03:24
【问题描述】:
我想以编程方式杀死一个在 while(true) 循环中运行并无限监听连接的线程,由于监听是一种阻塞方法,我不能简单地将循环 statemenet 设置为 false。我的应用程序通常在连接启动服务器以侦听连接时定期交换网络,所以当它确实交换到另一个网络时,我担心旧服务器会变成僵尸并卡在那里,因为在新网络上服务器绑定在与之前的 IP 不同。
PS。将服务器绑定到本地主机不需要在网络更改后重置吗?
【问题讨论】:
-
我建议的第一件事是将您的代码重构为非阻塞调用,如果这在您的语言中是可能的(顺便说一句,您没有提到哪个)。然后你可以打破循环......编辑:对不起,我刚刚注意到它属于 Java 类别。
-
@NoICE 语言在标签中,JAVA :) ,如何重构像 socket.accept() 这样的方法?这甚至可能吗?
-
Ruby 有 IO.select 调用而不是 accept.. 我敢打赌 java 也有其他方法可以做到这一点......只需谷歌“java 非阻塞 io”(或套接字)(我想在这方面提供更多帮助,但我是 java 初学者)
标签: java multithreading