如何关闭多线程服务器



所以我有一个程序,客户端可以输入任何类型的任务,其他客户端也可以检查它,但我不知道如何关闭尝试接受服务器新连接的循环。我想要的是,当我使用我写的命令关闭最后一个运行的客户端时,我希望服务器也关闭。

有人能帮忙吗?

public class TaskListServer {
public static List<String> taskList = new ArrayList<>();
public static String uniqueString(){
return String.join(", ", taskList);
}
public static void addTasks(String task) {
taskList.add(task);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
ServerSocket serverSocket = new ServerSocket(4242);
while (true) {
Socket clientSocket = serverSocket.accept();
ThreadedServer clientThread = new ThreadedServer(clientSocket);
new Thread(clientThread).start();
}
}catch (IOException e) {
e.printStackTrace();
}
sc.close();
}

不要使用无穷大循环(while(true)(。

private static boolean acceptNewClients = true;

public static void flipAcceptNewClients() {
acceptNewClients = !acceptNewClients;
}

public static void main(String[] args) {
/* your code here */
while (acceptNewClients) {
Socket clientSocket = serverSocket.accept();
ThreadedServer clientThread = new ThreadedServer(clientSocket);
new Thread(clientThread).start();
}
/* your code here */
}

最新更新