我有以下代码块:
public void startListening() throws Exception {
serverSocket = new DatagramSocket(port);
new Thread() {
@Override
public void run() {
System.out.print("Started Listening");
byte[] receiveData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
while (!stopFlag) {
try {
serverSocket.receive(receivePacket);
String message = new String(receivePacket.getData());
System.out.println("RECEIVED: " + message);
} catch (Exception ex) {
System.out.print("Execption :" + ex.getMessage());
}
}
}
}.start();
}
public void stopListening() {
this.stopFlag = true;
}
假设我将 stopFlag 设置为 true。 serverSocket.receive(receivePacket);
将等待直到它收到数据包。想让线程在stopFlag设置为true后立即退出怎么办?
最佳答案
我在套接字上也遇到了同样的问题,interrupt() 不起作用。我的问题通过关闭套接字得到解决。因此,在 setStop() 方法(如上所建议的)中,您必须调用 serverSocket.close()
(您显然必须使 serverSocket 成为类成员或类似的东西)。
关于java - 从一个线程中退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10136603/