In Java NIO, ist ein Selektor nützlich für einen Client SocketChannel?

8

In Java NIO ist es leicht verständlich, warum ein ServerSocketChannel einen Selektor haben muss. Der Selektor kann von mehreren Client-Kanälen prüfen, welche für E / A-Operationen bereit sind.

In einigen Kommentaren, die ich im Web gelesen habe, wird der Selector-Mechanismus jedoch auf den Client SocketChannel angewendet. Ich verstehe nicht, warum ein Selektor für einen Kunden von Nutzen ist. Kann jemand erklären, warum es unter den üblichen Umständen, wo es nur einen Server gibt, nützlich ist?

    
Arvanem 09.09.2012, 10:09
quelle

2 Antworten

6

Wenn Sie keine Verbindung zu Hunderten von Servern herstellen, ist es schwierig, den Punkt des nicht blockierenden NIO in einem Client zu erkennen. Aber wenn Sie nicht-blockierende NIO verwenden, müssen Sie definitiv eine Selector verwenden, sonst können Sie nicht wissen, wann der Kanal gelesen werden soll, oder wenn er nach einem unvollständigen Schreiben wieder beschreibbar wird.

    
EJP 09.09.2012, 23:04
quelle
5

Mit Selektoren können Sie die gleichzeitige Kommunikation über mehrere Kanäle hinweg mit einem einzigen Thread ausführen. Es kann auf einem Client nützlich sein, wenn Sie mit mehreren Servern gleichzeitig kommunizieren müssen oder wenn Sie mit Peer-Computern in der Rolle eines Clients kommunizieren, z. B. beim Lesen eines Torrents.

    
dasblinkenlight 09.09.2012 10:21
quelle

Tags und Links