退出线程

Akh*_*iar 5 java multithreading udp

我有以下代码块:

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;
}
Run Code Online (Sandbox Code Playgroud)

假设我将stopFlag设置为true.serverSocket.receive(receivePacket);将等到收到数据包.如果我想在stopFlag设置为true后立即退出线程,我该怎么办?

mis*_*lee 6

我也遇到了套接字的问题,而interrupt()也没有用.我的问题通过关闭套接字解决了.所以在setStop()方法中(如上所述)你必须调用serverSocket.close()(你显然必须使serverSocket成为类成员或其他东西).