gpt4 book ai didi

java - 跨多个 ServerBootstrap 使用相同的线程池是否安全?

转载 作者:可可西里 更新时间:2023-11-01 02:42:58 25 4
gpt4 key购买 nike

我有一个基于 netty 的应用程序,它监听多个 tcp 端口。所以每个端口都是这样初始化的

bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(
Executors.newCachedThreadPool(), Executors.newFixedThreadPool(Settings.getDemuxPoolSize()),
Settings.getDemuxPoolSize()));

但是拥有这么多线程池(而且我有很多开放的 TCP 端口)对我来说是一种浪费。

问题是:在 Netty 中跨多个服务器 Bootstrap 使用 SAME 线程池是否安全? (也许一些线程本地 channel 引用等?)

最佳答案

您最好先创建一个 WorkerPool,然后在不同的 NioServerSocketChannelFactory 实例之间共享它。因此,您可以为不同的 ChannelFactory 实例使用相同的 Worker。

类似于:

WorkerPool<NioWorker> workerPool = new NioWorkerPool<NioWorker>(Executors.newCachedThreadPool(), size);
NioServerSocketChannelFactory factory = new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), workerPool);
NioServerSocketChannelFactory factory2 = new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), workerPool);
....

关于java - 跨多个 ServerBootstrap 使用相同的线程池是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13624218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com