在多线程应用程序中,我有一个主题:
datagramSocket.receive(packet);
等待数据包的- 使用 receive 方法阻止执行。 与此同时,其他一些线程想要关闭这个“等待”线程。
我怎样才能做到这一点?
目前我正在关闭套接字,导致抛出 SocketException ,我认为这不是最好的主意......
任何帮助?
答案 0 :(得分:1)
自己关闭套接字并不是一个坏主意:我们不能在不查看上下文的情况下说出是否有任何设计错误,但我并不喜欢它。
另一种方法是将代码放在一个循环中,该循环检查一些volatile
标志(因为它可能已经存在)并设置超时:
while (on) {
//...
datagramSocket.setSoTimeout(5000);
datagramSocket.receive(packet);
//...
}