gpt4 book ai didi

java - 打破来自不同类的循环

转载 作者:行者123 更新时间:2023-11-29 07:56:53 25 4
gpt4 key购买 nike

所以,这就是我所拥有的。这是一个使用线程连接到多个客户端的服务器程序。截至目前,主循环几乎是无限的。假设客户端向 ServerThread 发送了一个关闭命令。该 ServerThread 是否能够访问主类、跳出循环并到达程序末尾?

我尝试在 ServerThread 中设置 isRunning = false,但这似乎不起作用。

public class Server
{
public static boolean isRunning = true;

public static void main(String[] args)
{
// init stuff

try {
serverSocket = new ServerSocket(27647);
} catch (IOException e) {
println("Could not listen on port 27647");
}

while(isRunning)
{
Socket clientSocket = null;

try{
clientSocket = serverSocket.accept();
} catch(IOException e) {
println("Could not connect to client");
}

ServerThread serv = new ServerThread(clientSocket);
serv.start();
}

try {
serverSocket.close();
} catch (IOException e1) { }
}
}

最佳答案

您需要使 isRunning 可变,并且您必须关闭 serverSocket 以解锁接受线程。我建议你有一个像

这样的方法
public void close() throws IOException {
isRunning = false;
serverSocket.close();
}

如果您从任何线程调用它,该线程几乎会立即停止。

关于java - 打破来自不同类的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17159605/

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