我在主线程中创建一个DatagramSocket,然后创建一个内部类线程来监听端口.当我在主线程中关闭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()方法.我怎样才能做到这一点?