gpt4 book ai didi

即使 while 循环完成,Java 线程也不会停止

转载 作者:行者123 更新时间:2023-11-30 06:32:43 26 4
gpt4 key购买 nike

我有一个客户端<->服务器应用程序。问题是当我单击“退出”按钮时,它不会杀死整个线程。它杀死了进程,但线程仍然保持 Activity 状态。但是,如果我单击“X”按钮,JOptionPane.showConfirmDialog 将停止一切,因此我希望该按钮执行相同的操作(被终止)。

P.P。 “退出”按钮启动一个调用disconnect()的JSwingWorker

@Override
public void run() {
synchronized (this) {
while (!serverDownAfterTry && !serverClosedByButton) {
multicastSocket = connectToMulticastAddress(multicastIP);
mediator = new Mediator(multicastSocket, this, objectOutput, userName);
mediator.setSocketIP(clientSocket.getInetAddress().toString());
mediator.setSocketPort(clientSocket.getPort());
String input = "";
if (connected) {
mediator.writeOnMulticastAddress("USER_CONNECTED " + this.userName);
mediator.executeCommands("SYSTEM_MESSAGE " + this.userName, clientGUI);
input = mediator.listenToMultiCast(multicastSocket);
}
while (!multicastSocket.isClosed()) {
input = mediator.listenToMultiCast(multicastSocket);
if (input != null) {
mediator.executeCommands(input, clientGUI);
}
}
}
}
}

public void disconnect() {
clientGUI.dispose();
serverClosedByButton = true;
multicastSocket.close();
try {
objectOutput.close();
clientSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}这是当我单击“退出”按钮时发生的情况: enter image description here

这就是当我单击 JFrame(终止)上的“X”按钮时发生的情况: enter image description here

最佳答案

当您使用 Swing 时,您需要终止 VM 才能退出。例如通过使用 System.exit(0);

关于即使 while 循环完成,Java 线程也不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45756080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com