Name
Pipe
Synopsis
A pipe is an
abstraction that allows the one-way transfer of bytes from one
thread to another. A pipe has a
“read end” and a
“write end” which are represented
by objects that implement the ReadableByteChannel
and WritableByteChannel interfaces. Create a new
pipe with the static Pipe.open(
)
method. Call the sink(
)
method to obtain the Pipe.SinkChannel object that
represents the write end of the pipe, and call the source(
)
method to obtain the Pipe.SourceChannel object
that represents the read end of the pipe.
Programmers familiar with
Unix-style
pipes may find the names and return values of the sink(
) and source( ) methods confusing. A
Unix pipe is an interprocess communication mechanism that is tied to
two specific processes, one of which is a source of bytes and one of
which is a destination, or sink, for those bytes. With this
conceptual model of a pipe, you would expect the source to obtain the
channel it writes to with the source( ) method and
the sink to obtain the channel it reads from with the sink(
) method.
This Pipe class is not a Unix-style pipe, however.
While it can be used for communication between two threads, the ends
of the pipe are not tied to those threads, and there need not be a
single source thread and a single sink thread. Therefore, in the
Pipe API it is the pipe itself that serves as the
source and the sink of bytes: bytes are read from the source end of
the pipe, and are written to the sink end.
public abstract class Pipe { // Protected ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access