NIO Concepts

From NovaOrdis Knowledge Base
Revision as of 20:45, 19 January 2016 by Ovidiu (talk | contribs)
Jump to navigation Jump to search

Internal

Overview

NIO (Non-blocking IO) was introduced in Java 4 and enhanced with new File operations as NIO.2 in Java 7.

The major improvement introduced by NIO was allowing non-blocking I/O operations from Java programs, by Until NIO, all that was available for I/O were Streams (java.io.*), and all operations with Streams are blocking: a thread waits until there is data to read from the Stream instance or until it can write to the Stream instance.





Buffer

java.nio.Buffer is a linear, finite sequence of elements of a specific primitive type. Networking software uses ByteBuffers.

ByteBuffer

Channel

A channel represents an open connection to an entity such as a hardware device, a file, a network socket or a program component that is capable of performing one or more distinct I/O operations - for example reading or writing.

A channel is either opened or closed. A channel is open upon creation and once closed it remains closed.

Chanel are in general intended to be safe for multithreaded access.