将相同的ExecutorService实例传递给Netty中的多个NioServerSocketChannelFactory是否安全

时间:2012-02-22 11:49:54

标签: java netty

我在端口xxxx上运行了tcp服务器,在端口843上运行了flash策略服务器(同样是tcp)。如果在为两台服务器创建服务器引导程序时传递相同的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))

现在,我想将相同的bossworker传递给Flash政策服务器serverBootstrap。这是有效用法吗?

1 个答案:

答案 0 :(得分:1)

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

我非常确定无论文档如何,返回的实例都是线程安全的,但我仍然会创建两个具有不同名称的新ExecutorService,以简化调试和可读性。