2012-02-22 10 views
0

ポートxxxxでtcpサーバを実行し、ポート843でフラッシュポリシーサーバ(やはりtcp)を作成しています。作成中に同じExecutorServiceインスタンスを渡しても問題ありませんサーバーのブートストラップは両方のサーバーにありますか?データ破損につながるでしょうか?Net32の複数のNioServerSocketChannelFactoryに同じ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)) 

は今、私はフラッシュポリシーサーバserverBootstrapに同じbossworkerを渡したいです。これは有効な使用ですか?

答えて

1

newCachedThreadPool()によって返されたExecutorServiceは、ドキュメントのどこでもスレッドセーフであるとは限りません。したがって、2つの新しいExecutorServiceを作成するのは正しいアクションでしょう。

私は確かにドキュメントに関係なくスレッドセーフですが、デバッグと読みやすさを容易にするために、別の名前の2つの新しい名前を付けました。

+0

私がqに尋ねたのは、フラッシュポリシーサーバにトラフィックがほとんどなく、専用のスレッドを作成すると無駄に見えるということでした。とにかくaのおかげで。 – Abe

+0

私はあなたがそれを達成するだろうとは思わない。 Nettyは 'ExecutorService'をスレッドファクトリとしてのみ使用しているので、' Executor'を共有していても、サーバの持続時間の間にそれぞれスレッドを占有します。 – Johannes

+0

私は固定スレッドプールのエグゼキュータの権利を渡す場合はありませんか? Executors.newsinglethreadexecutor – Abe

関連する問題