Java Netty-仅使用一个打开的套接字增加工作线程数

Java Netty-仅使用一个打开的套接字增加工作线程数,java,multithreading,sockets,netty,Java,Multithreading,Sockets,Netty,我正在使用Netty实现我的客户机/服务器体系结构。情况如下: 1.从1个客户端到服务器仅打开1个套接字/连接 2.我创建了带有1个线程的bossgroup和带有3个线程的workergroup,并将它们分配给serverbootstrap 现在,当我使用htop监控cpu/线程时,我只看到服务器上运行2个线程(可能是1个boss和1个worker线程),但通常应该是1个boss和3个worker线程。为什么不创建这些工作线程 如果您使用的是Netty 3(听起来像这样),线程将被延迟创建,并且

我正在使用Netty实现我的客户机/服务器体系结构。情况如下: 1.从1个客户端到服务器仅打开1个套接字/连接 2.我创建了带有1个线程的bossgroup和带有3个线程的workergroup,并将它们分配给serverbootstrap


现在,当我使用htop监控cpu/线程时,我只看到服务器上运行2个线程(可能是1个boss和1个worker线程),但通常应该是1个boss和3个worker线程。为什么不创建这些工作线程

如果您使用的是Netty 3(听起来像这样),线程将被延迟创建,并且由于您只有一个连接,因此无需创建另一个线程。

如果您使用的是Netty 3(听起来像这样),线程将被延迟创建,并且由于您只有一个连接,因此无需创建另一个线程。

嘿,诺曼,谢谢您的回答。我正在开发一个协议,其中两个服务器(a和B)之间的连接仅通过一个套接字创建。服务器A使用到服务器B的客户端引导打开套接字,并保持该套接字打开。真正的客户端现在连接到服务器A并发送消息。服务器A现在起到代理的作用,将所有具有哈希映射中的id的客户端消息发送到服务器B。服务器B现在只创建一个线程来处理所有消息。不管我在事件组中投入多少线程,只执行一个线程来处理传入的消息,因为Netty假设整个收入的顺序必须相同,但实际上数据包含更多消息服务器B必须进行加密工作,如下所示,CPU的一个核心已满负荷,其他核心处于休眠状态。我需要一种方法来为加密处理程序提供更多线程,但似乎只有一个套接字不可能做到这一点,我使用Netty 4.0.29我尝试为处理程序提供DefaultEventExecutorGroup,仍然只有两个线程为单个套接字运行boss和worker线程。相比之下,我还实现了一个版本,其中在服务器a和B之间创建了多个套接字(针对每个实际客户机)。使用这个多套接字解决方案,我在workergroup中为引导执行指定的所有线程时达到了最大CPU能力。嗨,诺曼,谢谢你的回答。我正在开发一个协议,其中两个服务器(a和B)之间的连接仅通过一个套接字创建。服务器A使用到服务器B的客户端引导打开套接字,并保持该套接字打开。真正的客户端现在连接到服务器A并发送消息。服务器A现在起到代理的作用,将所有具有哈希映射中的id的客户端消息发送到服务器B。服务器B现在只创建一个线程来处理所有消息。不管我在事件组中投入多少线程,只执行一个线程来处理传入的消息,因为Netty假设整个收入的顺序必须相同,但实际上数据包含更多消息服务器B必须进行加密工作,如下所示,CPU的一个核心已满负荷,其他核心处于休眠状态。我需要一种方法来为加密处理程序提供更多线程,但似乎只有一个套接字不可能做到这一点,我使用Netty 4.0.29我尝试为处理程序提供DefaultEventExecutorGroup,仍然只有两个线程为单个套接字运行boss和worker线程。相比之下,我还实现了一个版本,其中在服务器a和B之间创建了多个套接字(针对每个实际客户机)。使用这个多套接字解决方案,我可以在workergroup中为引导指定的所有线程执行时达到最大CPU能力。