0

我正在创建一个包含许多学习机器的分布式系统。我需要在机器之间发送和接收数据,并且我正在使用 java.nio 来创建该网络。在一台机器上,我为 serversocketchannel 使用一个线程从其他机器接收数据,并为每个数据包创建新线程来发送它。这意味着一台机器上一个线程接收和多个线程发送。

但我面临一个问题,由于一个线程处理接收,许多客户端在连接时将处于挂起状态。我应该将其更改为一个线程处理接收和一个线程处理发送吗?谢谢 P/s:我不想使用任何 3rd 方框架。

4

1 回答 1

0

如果您的网络中的发送者多于接收者,那么显然有些发送者最终会等待。如果您的接收者多于发送者,那么显然一些接收者将处于空闲状态,因为几乎所有时间发送者都可能会一对一地连接到​​接收者。


我无法判断您“应该做什么”,因为我不知道您要完成什么。

无论如何,接收端使用的两种常见模式是:

  • 一个线程处理所有
  • 一个线程只处理接受连接并打开流,然后将流的实际工作委托给另一个线程(通常来自线程池,以防止在为每个连接创建新线程时可能发生的资源耗尽)
于 2016-11-28T07:51:50.597 回答