我正在创建一个包含许多学习机器的分布式系统。我需要在机器之间发送和接收数据,我使用java.nio来创建该网络。在一台机器上,我使用一个线程用于serversocketchannel来接收来自其他机器的数据,并使用每个数据包创建新线程来发送它。这意味着一个线程用于接收,多个线程用于在一台机器上发送。
但我遇到的问题是,由于一个线程处理接收,许多客户端在连接时将处于挂起状态。 我应该将其更改为一个线程处理接收和一个线程处理发送吗? 谢谢 P / s:我不想使用任何第三方框架。
答案 0 :(得分:0)
如果网络中的发件人数多于收件人,那么显然有些发件人最终会等待。如果你的接收器多于发送器,那么显然有些接收器会空闲,因为几乎所有的发送器都可能一对一地连接到接收器。
我无法判断你应该做什么,因为我不知道你想要完成什么。
无论如何,接收器端使用的两种常见模式是: