A pair of channels that implements a unidirectional pipe.
A pipe consists of a pair of channels: A writable {@link
Pipe.SinkChannel sink} channel and a readable {@link
Pipe.SourceChannel source} channel. Once some bytes are
written to the sink channel they can be read from source channel in exactly
the order in which they were written.
Whether or not a thread writing bytes to a pipe will block until another
thread reads those bytes, or some previously-written bytes, from the pipe is
system-dependent and therefore unspecified. Many pipe implementations will
buffer up to a certain number of bytes between the sink and source channels,
but such buffering should not be assumed. |