java - 限制Oio Netty服务器的线程数

标签 java io netty

我正在尝试在基于 Server Netty 的应用程序中使用 Oio。我目前使用它的方式如下:

String host: String = //...
int port = //...

ServerBootstrap server = new ServerBootstrap()
  .group(new OioEventLoopGroup(), new OioEventLoopGroup())
  .localAddress(new InetSocketAddress(host, port))
    .channel(OioServerSocketChannel.class)
    .childHandler(new ChannelInitializer<Channel>() {
      public void initChannel(Channel ch){
         ch.pipeline()
        //adding handlers
      }
    })
server.bind().sync()

问题是线程数量会无限增长。但我想将其限制为 64 个。如果超过 64 个客户端尝试连接,我想做一些事情(可能会响应连接被拒绝)

有没有办法控制Netty Oio中的线程数量?

最佳答案

您可以尝试创建具有限制的 OioEventGroup,即使用以下构造函数之一
public OioEventLoopGroup(int maxChannels)

public OioEventLoopGroup(int maxChannels,
                         java.util.concurrent.ThreadFactory threadFactory)

Link到文档。

目前,您正在无限制地创建它,因此线程可以不受任何限制地增长。

关于java - 限制Oio Netty服务器的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47918816/

相关文章:

java - Netty解码器编码器错误

java - 找不到类 [org.apache.derby.jdbc.ClientDriver]。尝试连接到数据库时

java - 调整图像文件的大小

java - 我应该为我的简单流程使用内存映射文件吗?

java - 在 Java 中保存程序设置的不同方法

gradle - Apache Spark 和 gRPC

Java 的 BigInteger 实现

java - 如何在java中将一个枚举转换为另一个枚举?

java - 如何清空输入流?

multithreading - 线程不在 Netty UDP 服务器中同时执行