我在主線程中創建一個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