最近、サーバーを作成するために Java ソケットと NIO をいじっていました。なぜ Java NIO が標準ソケットよりも優れているのかは、まだよくわかりません。これらのテクノロジーのいずれかを使用してサーバーを作成する場合、ほとんどの場合、接続を受け入れてさらにそれらを作業スレッドに渡すディスパッチャー スレッドを持つことになります。
スレッドモデルでは接続ごとに専用のスレッドが必要ですが、固定サイズのスレッドプールを作成し、それらを再利用してさまざまな接続を処理できることを読みました (スレッドの作成と破棄のコストが削減されるように) .
しかし、Java NIO の場合は似ています。リクエストを受け入れる 1 つのスレッドと、受信時にデータを処理するいくつかのワーカー スレッドがあります。
私が見つけた Java NIO の方が優れている例は、チャット クライアントや http サーバーのように、多くの非ビジー接続を維持するサーバーです。しかし、その理由がまったく理解できません。