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?
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.
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.
Tags und Links java css-selectors nio