我们需要创建一个ListeningDispatcher,它接受来自N个客户端的端口P上的连接(现在它们是本地的,因此它们只能通过端口识别,但稍后可能是一个地址)。我的方法是放入一个.accept()调用,检索Socket,启动一个新线程并让它处理来自Socket的消息。因此,如果我们的分布式系统中有n个客户端(基于广播,带有逻辑令牌环),我将使用N个套接字保留N个线程。
我的伙伴认为这会保持太多线程打开,最好在每个新连接上启动一个新线程,但不是保持线程运行,关闭套接字并在收到消息后停止线程。这样,我们将使用更少的线程,但我们必须为每条消息创建一个新的Socket。
我认为这会降低通信速度,因为打开一个新的Socket需要时间。
考虑到系统必须是可扩展的并且具有繁重的通信部分,因为每个事件都被广播给每个客户。
注意:我们不能使用ThreadPools
答案 0 :(得分:1)
我的方法是放一个.accept()调用,检索Socket, 启动一个新线程并让它处理来自Socket的消息。
不要开始新线程。使用thread pool并重用线程。
这样,我们会使用更少的线程,但我们必须创建一个新的 每条消息的套接字
对于每个客户端,您通过accept
使用不同的客户端套接字。这句话没有意义
答案 1 :(得分:0)
因此,您必须在更少的线程和更少的新连接之间做出决定。你的“伙伴”可能想要思考为什么发明了HTTP keep-alive。它被发明为在可能的情况下重用连接而不是支付创建新连接的成本。