NIO と TCP は、多くの接続に最適な組み合わせです。新しいクライアントごとに新しい接続を開く必要があるため、通常、これらの各クライアントには、I/O 操作をブロックするための独自のスレッドが必要です。NIO は、データが使用可能になるまでブロックするのではなく、可能なときにデータを読み取れるようにすることで、この問題に対処します。しかし、UDP はどうでしょうか。
つまり、コネクションレス UDP には、プロトコルの設計方法 (基本的には送信して忘れる) が原因で、TCP のようなブロッキングの性質が関連付けられていません。データをあるアドレスに送信することにした場合、(サーバー側で) 遅延なく送信されます。同様に、データを読み取りたい場合は、さまざまなソースから個々のパケットを受信するだけです。それぞれを処理するために多くのスレッドを使用して、多くの場所に多くの接続を行う必要はありません。
では、NIO とセレクターはどのように UDP を強化するのでしょうか? java.net
より具体的には、古いパッケージではなく、NIO で UDP を使用することを好むのはいつですか?