Java 将同一ExecutorService实例传递给Netty中的多个NioServerSocketChannelFactory安全吗

Java 将同一ExecutorService实例传递给Netty中的多个NioServerSocketChannelFactory安全吗,java,netty,Java,Netty,我有一个tcp服务器运行在端口xxxx和闪存策略服务器(再次tcp)在端口843。在为两台服务器创建服务器引导时,如果传递相同的ExecutorService实例,可以吗?它会导致数据损坏吗 ExecutorService boss = Executors.newCachedThreadPool(new NamedThreadFactory("TCP-Server-Boss") ExecutorService worker = Executors.newCachedThreadPool(new

我有一个tcp服务器运行在端口xxxx和闪存策略服务器(再次tcp)在端口843。在为两台服务器创建服务器引导时,如果传递相同的ExecutorService实例,可以吗?它会导致数据损坏吗

ExecutorService boss = Executors.newCachedThreadPool(new NamedThreadFactory("TCP-Server-Boss")
ExecutorService worker = Executors.newCachedThreadPool(new NamedThreadFactory("TCP-Server-Worker")
serverBootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(boss,worker))

现在,我想将相同的
boss
worker
传递给flash策略服务器
serverBootstrap
。这是有效的用法吗?

newCachedThreadPool()
返回的
ExecutorService
不保证在文档中的任何位置都是线程安全的。因此,创建两个新的
ExecutorService
s是正确的操作


我很确定返回的实例是线程安全的,不管文档是什么,但是我仍然会使用不同的名称创建两个新的
ExecutorService
s,以简化调试和可读性。

我问q的原因是flash策略服务器的流量非常小,为其创建专用线程看起来像是浪费。无论如何,谢谢你的a。我认为你无论如何都不会达到这个目标。我认为Netty只是将
ExecutorService
用作线程工厂,因此即使他们共享
Executor
,在服务器运行期间,他们仍然会各自占用一个线程。如果我传入一个固定线程池Executor,不是吗?Executors.NewsingleThreadExecutor假定im正确,它仍将尝试获取相同数量的线程。它是否会成功是另一回事。使用固定线程池很可能是个坏主意。最好配置Netty应该使用多少线程,并让池不受限制。