我正在尝试在基于 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/