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

时间:2016-05-09 08:54:24

标签: java multithreading session

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

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

所以一般来说我会做这样的事情:

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

现在我想在做一些sigterm kill方法之前给每个会话一些秒(让我们说5)关闭。

那么首选方式是什么:

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

    OR

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

    for (Session session : sessions) {
        startClosingThread(session);
    }
    
  3. 更新:

    我注意到有些用户对#34; Session"这个词很不满意,问题不在于SessionHandling。如果我发送关闭消息或断开套接字无关紧要。这不是问题。

    您可以将会话替换为UserThread。

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

1 个答案:

答案 0 :(得分:1)

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