# Class Pipe

java.lang.Object
java.nio.channels.Pipe

public abstract class Pipe extends Object
A pair of channels that implements a unidirectional pipe.

A pipe consists of a pair of channels: A writable `sink` channel and a readable `source` channel. Once some bytes are written to the sink channel they can be read from the 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.

Since:
  1.4

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`Pipe.SinkChannel`
A channel representing the writable end of a `Pipe`.
`static class`
`Pipe.SourceChannel`
A channel representing the readable end of a `Pipe`.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`Pipe()`
Initializes a new instance of this class.

## Method Summary

Modifier and Type
Method
Description
`static Pipe`
`open()`
Opens a pipe.
`abstract Pipe.SinkChannel`
`sink()`
Returns this pipe's sink channel.
`abstract Pipe.SourceChannel`
`source()`
Returns this pipe's source channel.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Pipe

protected Pipe()
Initializes a new instance of this class.

## Method Details

### source

public abstract Pipe.SourceChannel source()
Returns this pipe's source channel.

Returns:
  This pipe's source channel

### sink

public abstract Pipe.SinkChannel sink()
Returns this pipe's sink channel.

Returns:
  This pipe's sink channel

### open

public static Pipe open() throws IOException
Opens a pipe.

The new pipe is created by invoking the `openPipe` method of the system-wide default `SelectorProvider` object.

Returns:
  A new pipe
Throws:
  `IOException` - If an I/O error occurs