Java:监听具有更多线程的单个端口而不是监听多个端口

时间:2019-01-27 23:50:23

标签: java sockets networking network-programming port

说我有一个Java程序正在监听端口8001,消耗并做一些消息工作
该端口上的程序正在处理的位的吞吐量是否有理论上的最大值?即您将线程专用于该端口,并且可以通过添加更多线程来侦听该端口来进行扩展?您可以为该端口分配多少个线程有限制?

现在,如果确实存在关于通过在特定端口上抛出更多线程可以扩展多少的理论最大值,是否可以通过让程序侦听其他端口8001和8002并增加2倍的线程来克服这一问题?您的程序现在可以服务两倍以上的请求吗?

或者端口上的这些吞吐量与端口上的吞吐量是否未发出有关进入主机的比特吞吐量受NIC限制?

1 个答案:

答案 0 :(得分:-1)

您可以在同一套接字(***)上提供任意数量的并发连接。您可以为每个连接分配一个线程,但是请记住,在Java中,每个线程消耗大约2MB。

由于我们在谈论扩展,因此添加线程并不能神奇地将内核添加到您的CPU。

(***)有一个理论上的限制,因为可能的IP地址数量乘以可能的源端口数量是有限的,但是在达到它之前,您将耗尽内存。