我在端口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))
现在,我想将相同的boss
和worker
传递给Flash政策服务器serverBootstrap
。这是有效用法吗?
答案 0 :(得分:1)
ExecutorService
返回的newCachedThreadPool()
不保证在文档中的任何位置都是线程安全的。因此,创建两个新的ExecutorService
是正确的操作。
我非常确定无论文档如何,返回的实例都是线程安全的,但我仍然会创建两个具有不同名称的新ExecutorService
,以简化调试和可读性。