piped streams

    ; are a mechanisms in the JAVA I/O library to set up a stream of data between two threads.

If both the pipe's reader and writer are the same thread, and the pipe fills up, the thread blocks permanently.