Java NIO では、ServerSocketChannel にセレクターが必要な理由は簡単に理解できます。セレクターは、I/O 操作の準備ができているいくつかのクライアント チャネルの中からチェックできます。
ただし、Web で読んだいくつかの解説では、セレクター メカニズムはクライアントの SocketChannel に適用されます。セレクターがクライアントに役立つ理由がわかりません。サーバーが 1 つしかない通常の状況でなぜそれが役立つのか、誰か説明できますか?
Java NIO では、ServerSocketChannel にセレクターが必要な理由は簡単に理解できます。セレクターは、I/O 操作の準備ができているいくつかのクライアント チャネルの中からチェックできます。
ただし、Web で読んだいくつかの解説では、セレクター メカニズムはクライアントの SocketChannel に適用されます。セレクターがクライアントに役立つ理由がわかりません。サーバーが 1 つしかない通常の状況でなぜそれが役立つのか、誰か説明できますか?
何百ものサーバーに接続していない限り、クライアントでノンブロッキング NIO のポイントを理解することはまったく困難です。しかし、非ブロッキング NIO を使用している場合は、必ず を使用するSelector
必要があります。そうしないと、チャネルをいつ読み取るか、または不完全な書き込みの後に再び書き込み可能になるかを知ることができません。
セレクターを使用すると、単一のスレッドを使用して複数のチャネル間で同時通信を処理できます。同時に複数のサーバーと通信する必要がある場合、または torrent を読み取る場合など、クライアントの役割でピア コンピューターと通信する場合に、クライアントで役立つ場合があります。