tôi tạo một DatagramSocket
trong chủ đề chính, và sau đó tạo một chuỗi lớp bên trong để nghe cổng. khi tôi đóng các DatagramSocket
trong chủ đề chính, nó luôn luôn đi qua một lỗi socket closed
vì trong thread lớp bên trong tôi gọi là phương pháp , và nó bị chặn các chủ đề lớp bên trong. đây là đoạn code của lớp bên trong:làm thế nào tôi có thể dừng phương thức chặn DatagramSocket.receive() trong một chủ đề
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();
}
}
}
}
tôi muốn dừng thread lớp bên trong trước khi đóng DatagramSocket, nhưng phương pháp stop()
không được khuyến khích. Làm thế nào tôi có thể làm điều đó?
đó là một giải pháp, nhờ – cloud
tôi cũng có thể khẳng định công trình này! Cách tốt nhất để thoát ra khỏi một chuỗi công nhân mà là trong một vòng lặp nhận trên một ổ cắm datagram. – Nerdtron