java推荐用于关闭多个用户会话的方法

Gob*_*ins 8 java session multithreading

我们希望将客户端与服务器断开连接.

所以我们向会话发送了一些消息,其中包括一些命令,如"关闭你自己"l

所以一般来说我做的是这样的:

for (Session session : sessions) {
        closeSession(session);
        while(!verifyClosed(session)){
            closeSession(session);
            retries++;
            if(retries==10){
                retries = 0;
                break;
            }
        };
    }
Run Code Online (Sandbox Code Playgroud)

现在我想在做一些sigterm kill方法之前为每个会话提供一些秒(比方说5).

那么首选方式是什么:

  1. 为每个会话关闭过程执行最多5秒延迟的循环.

    要么

  2. 为每个会话启动执行此过程的线程,以便同时关闭会话.

    for (Session session : sessions) {
        startClosingThread(session);
    }
    
    Run Code Online (Sandbox Code Playgroud)

更新:

我注意到有些用户在"Session"这个词上误以为,问题不在于SessionHandling.如果我发送关闭消息或断开套接字无关紧要.这不是问题.

您可以用UserThread替换Session一词.

我需要一些建议的问题是:关闭"UserThread"将需要一些时间,所以现在等待每个线程关闭并步进到下一个,或者为每个UserThread启动它自己的repsonsible Closing Thread来处理所有线程同时.

War*_*Dew 1

对所有会话发送会话关闭请求,等待五秒钟,然后检查所有会话。这样会话关闭可以并行发生,而无需启动一大堆新线程。