我应该使用几个线程使用java.nio发送和接收数据



我正在创建一个具有许多用于学习的机器的分布式系统。我需要在计算机之间发送和接收数据,并且我正在使用Java.nio来创建该网络。在一台计算机中,我将一个线程用于Serversocketchannel从其他计算机接收数据,并将其用于每个数据包,我创建了新线程将其发送。这意味着一个用于接收的线程和多个线程用于发送一台机器。

,但我遇到的问题是,由于一个线程处理接收,许多客户端将在连接时正在等待。我应该将其更改为一个线程处理,然后发送一个线程把手?谢谢P/S:我不想使用任何第三方框架。

如果发件人的发件人多于您的网络中的接收器,那么显然,某些发件人最终会等待。如果您的接收器比发件人更多,那么显然,某些接收器将是空闲的,因为几乎所有发送者都可能将发件人连接到接收器,一对一。


我无法判断您"应该做的",因为我不知道您要完成的工作。

无论如何,接收器侧使用的两个常见模式是:

  • 一个线程处理全部
  • 一个线程处理仅接受连接并打开流,然后将流与流的实际作品委托给另一个线程(通常是从线程池中以防止为每个连接创建一个新线程的资源耗尽,这可能会发生)

最新更新