对于同一个服务 服务器多个线程共享一个socket?

IM中
比如A线程服务于A B线程服务于B
A要给B发消息 那么A和B共享一个socket 那A线程又是如何获得和B的tcp长连接呢
阅读 4.5k
2 个回答

用容器将每个用户对应的连接存储起来, 比如你单个服务的话, 用ConcurrentHashMap存下来用户和socket的对应关系, A线程要给B发送消息就从这个map中获取B对应的socket,然后写数据. 不过这样如果B断开连接你得把map中的B对应的数据删除掉

线程之间不需要通过 Socket,这样是把简单的事情复杂化了。多个线程可以访问同一个对象的,就去访问同一个对象来进行交互。但一般来说,这肯定是设计上有问题。这个要具体情况具体分析了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题