Pipe (Java Platform SE 8 )
Keywords: java.nio.channels.Pipe class
Date: 2026-04-17

compact1, compact2, compact3
java.nio.channels

## 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 source channel in exactlyAthe 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 and 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 and Description
    --- | ---
    `protected` | `Pipe()` Initializes a new instance of this class.

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and 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 inherited from class java.lang.Object

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

- - ### Constructor Detail

    - #### Pipe

          protected Pipe()

      Initializes a new instance of this class.

  - ### Method Detail

    - #### 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

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.