繁体   English   中英

如何关闭多线程服务器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM