我们需要创建一个 ListeningDispatcher,它接受来自 N 个客户端的端口 P 上的连接(现在它们是本地的,因此它们仅由端口标识,但稍后可能是地址)。我的方法是进行 .accept() 调用,检索 Socket,启动一个新线程并让它处理来自 Socket 的消息。因此,如果我们的分布式系统中有 n 个客户端(基于广播,具有逻辑令牌环),我将保留 N 个线程,具有 N 个套接字。
我的伙伴认为这会使太多线程保持打开状态,最好在每个新连接上启动一个新线程,而不是保持线程运行,关闭套接字并在收到消息后停止线程。这样,我们将使用更少的线程,但我们必须为每条消息创建一个新的 Socket。
我认为这会降低通信质量,因为打开一个新的 Socket 需要时间。
考虑到系统必须是可扩展的并且具有繁重的通信部分,因为每个事件都被广播到每个客户端。
注意:我们不能使用 ThreadPools