我在主线程中创建一个DatagramSocket
,然后创建一个内部类线程来侦听端口。当我在主线程中关闭DatagramSocket
时,它总是遇到错误socket closed
,因为在内部类线程中,我调用方法,并且它阻塞了内部类线程。这里是内部类的代码:我怎样才能阻止线程中的块方法DatagramSocket.receive()
class ReceiveText extends Thread
{
@Override
public void run()
{
while(true)
{
byte[] buffer = new byte[1024];
DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
try {
udpSocket.receive(dp);//blocked here
byte[] data = dp.getData();
String message = new String(data, 0 , dp.getLength());
setTxtAreaShowMessage(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
我想阻止关闭DatagramSocket的前内部类的线程,但不建议stop()
方法。我怎样才能做到这一点?
这是一个解决方案,谢谢 – cloud
我也可以证实这一点的工作!很好的方式来打破在数据报套接字的接收循环中的工作线程。 – Nerdtron