つまり、NIOはIOよりも高速で拡張性が高いと言われていますが、1000個の同時GET / PUTを処理するサーバーでも同じでしょうか?
モデルごとの単純なスレッドは、最大で倍数コアを利用します。NIOはこの点でどこに立っていますか?
これらの両方を組み合わせる方法はありますか?もしそうなら、詳細に関するリンクがより良いでしょう。
つまり、NIOはIOよりも高速で拡張性が高いと言われていますが、1000個の同時GET / PUTを処理するサーバーでも同じでしょうか?
モデルごとの単純なスレッドは、最大で倍数コアを利用します。NIOはこの点でどこに立っていますか?
これらの両方を組み合わせる方法はありますか?もしそうなら、詳細に関するリンクがより良いでしょう。
10年前、NIOはIOよりもはるかに優れたスケーリングを実現しました。これは主に、効率的に使用できるスレッドの数が比較的少なかったためです。Linuxシステムでは特に。たとえば、数百のスレッド。今日、転換点ははるかに高く、たとえば約10,000です。100,000の接続が必要な場合は、NIOを使用することをお勧めします。ただし、数千しかない場合は、ディスクやネットワークのパフォーマンスなどの他の問題がはるかに重要であることに気付く可能性があります。
私はほとんどの場合、ブロッキング接続ごとに1つのスレッドでNIOを使用します。実際、Java 7のNIO2までのデフォルトの動作は、ソケットとファイルをブロックしています。ところで、NIO2はスレッドプールを使用して「非同期」IOをサポートします。;)
@Kumar によって投稿されたリンクに加えて、これが役立つことがわかりました (数週間前にこの調査を行っていました): http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html。
より詳細な統計については、関連するスライドも参照してください。彼は java.io アプローチを支持します。もちろん、すべての場合と同様に、ユース ケースによって異なります。