[英]How do I close a multithreaded server?
所以我有一个程序,客户端可以输入任何类型的任务,其他客户端也可以检查它,但我不知道如何关闭尝试接受新连接到服务器的循环。 我想要的是当我关闭使用我写的命令运行的最后一个客户端时,我希望服务器也关闭。
任何人都可以帮忙吗?
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 */
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.