2012-05-11 15 views
0

Javaソケットサーバを構築するときにioとnioの違いについて過去数日間読んでいました。私の使用のために、私は多くの接続とトリックを行うことになっているイオンを実行することができるサーバーが必要です。 私の唯一の懸念は、接続ごとにスレッドを実行するのではなく、少し遅くて実装するのが少し難しいということです。だから、なぜ私は、スレッドの同じ容易さとjava.nioのロジックを使用しないで、サーバーを構築するには、開いているすべての接続をチェックするスレッドがあり、新しいイベントがあるときは、それを渡すための新しいスレッドを開きます。私はそのように世界の両方を楽しんでいると思います...あなたは何を提案しますか?ソケットサーバ用の自分自身のjava.nioを実装しています

+0

nettyやgrizzlyのような高性能なnioライブラリが複数ありますが、これはうまくいくはずです。 – Bill

答えて

0

NIOはほとんどすべてJNIに依存しているので、もう一度実装するには、実際にはC/++およびOS APIインターフェイスコードの負荷を書き込む必要があります。

私は既存のJavaの実装はすでにかなり良いと思います。たとえば、Selectorクラスは、複数のファイル記述子で待機するシステムコールをラップします。それを効率化するためにできることはほとんどありません。

0

NIOは、1つのスレッドのみを使用する点を理解していないことをお勧めします。それは確かに複雑で、あなたが1,000人以下のクライアント、おそらく10,000人、場合によっては100,000人も必要とするかどうかは議論の余地があります。私はそれを実行してフェーズ2のためのjava.nioを保存するjava.netであなたのサーバーを実装し、あなたが本当にそれが必要であることを自分自身に証明する場合は、

編集:私は確かにあなた自身のローリングのこのコンセプトを忘れてしまいます。あなたはその仕事を過小評価しています(本当に正しく機能するにはSun 1.4.0、1.4.1、1.4.2が必要でした)。そして、あなたは両方の世界で最悪のものを目指しているようです。 Sunがjava.nioで行ったより多くのことが、もう存在しないので、それ以上のものを得ることはできません。おそらく少し少ない;-)

+0

まずは良いアイデアです。 2番目はすべて1つのスレッドで行うことができます。ニオは何をしていないのですか?テクスチャごとに新しいスレッドを実行し、それを終了させますか? –

+0

@AsafNevo java.netとの接続ごとに別のスレッドが必要です。 – EJP

関連する問題