Java Non-Blocking I/O Concepts: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 11: Line 11:
{{External|[https://docs.oracle.com/javase/10/docs/api/java/nio/channels/Selector.html Selector]}}
{{External|[https://docs.oracle.com/javase/10/docs/api/java/nio/channels/Selector.html Selector]}}


A multiplexor that allows registration of multiple [[#Selectable_Channel|selectable channels]] so they can be serviced by a single selector thread. The selector thread will block in <tt>select()</tt> and it will be notified by the selector's implementation only when an I/O event (data becomes available, a new connection is established) occurs.
A multiplexor that allows registration of multiple [[#Selectable_Channel|selectable channels]] so they can be serviced by a single selector thread. The selector thread will block in <tt>select()</tt> and it will be notified by the selector's implementation only when an I/O event, such as data becoming available or a new connection being established, occurs.


==Channel==
==Channel==

Revision as of 17:59, 25 July 2018

Internal

Overview

Primitives

Selector

Selector

A multiplexor that allows registration of multiple selectable channels so they can be serviced by a single selector thread. The selector thread will block in select() and it will be notified by the selector's implementation only when an I/O event, such as data becoming available or a new connection being established, occurs.

Channel

Selectable channel.

Buffer

Java NIO and TCP Connections

A working example that shows various Java NIO primitives collaborating in establishing a bidirectional TCP connection:

Java NIO and TCP Connections