NIO Concepts: Difference between revisions
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
* [[NIO]] | * [[NIO]] | ||
* [[XNIO Concepts]] | * [[XNIO Concepts]] | ||
=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 (<tt>java.io.*</tt>), 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= | =Buffer= |
Revision as of 20:45, 19 January 2016
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.