我们希望将客户端与服务器断开连接。
所以我们向会话发送了一些消息,其中基本上包括一些命令,如"关闭自己" l
所以一般来说我会做这样的事情:
for (Session session : sessions) {
closeSession(session);
while(!verifyClosed(session)){
closeSession(session);
retries++;
if(retries==10){
retries = 0;
break;
}
};
}
现在我想在做一些sigterm kill方法之前给每个会话一些秒(让我们说5)关闭。
那么首选方式是什么:
为每个会话关闭过程执行最多5秒延迟的循环。
OR
为每个会话启动执行此过程的线程,以便同时关闭会话。
for (Session session : sessions) {
startClosingThread(session);
}
更新:
我注意到有些用户对#34; Session"这个词很不满意,问题不在于SessionHandling。如果我发送关闭消息或断开套接字无关紧要。这不是问题。
您可以将会话替换为UserThread。
我需要一些建议的问题是: 关闭" UserThread"将花费一些时间,所以现在等待每个线程关闭并逐步进入下一个线程,或者为每个UserThread启动它自己的repsonsible Closing Thread以同时处理所有线程。
答案 0 :(得分:1)
在所有会话上发送会话关闭请求,等待五秒钟,然后检查所有会话。这样会话关闭就可以并行发生而无需启动一大堆新线程。