PipedInputStream — 파이프 입력 스트림

PipedInputStream — 파이프 입력 스트림

PipedInputStream은 파이프 출력 스트림에 연결되어야 해요. 그러면 파이프 출력 스트림에 쓰여진 모든 데이터 바이트를 제공합니다. 보통 한 스레드가 PipedInputStream 객체에서 데이터를 읽고, 다른 스레드가 대응하는 PipedOutputStream에 데이터를 써요. 두 객체를 단일 스레드에서 모두 사용하려는 것은 데드락을 일으킬 수 있어 권장하지 않아요.

출처: Java API Reference

본문

파이프 입력 스트림은 한계 내에서 읽기 연산과 쓰기 연산을 분리하는 버퍼를 포함해요. 연결된 파이프 출력 스트림에 데이터 바이트를 공급하던 스레드가 더 이상 살아 있지 않으면 파이프가 "깨졌다(broken)"고 말해요.

이 클래스는 java.io.InputStream을 상속하며 Closeable, AutoCloseable을 구현합니다.

필드

  • protected byte[] buffer — 들어오는 데이터가 놓이는 원형 버퍼예요.
  • protected int in — 연결된 파이프 출력 스트림에서 다음 바이트가 저장될 원형 버퍼 위치의 인덱스예요.
  • protected int out — 이 파이프 입력 스트림이 다음에 읽을 원형 버퍼 위치의 인덱스예요.
  • protected static final int PIPE_SIZE — 파이프 버퍼의 기본 크기예요.

생성자

  • PipedInputStream() — 아직 연결되지 않은 PipedInputStream을 만들어요.
  • PipedInputStream(int pipeSize) — 아직 연결되지 않았고 지정한 파이프 크기를 사용하는 스트림을 만들어요.
  • PipedInputStream(PipedOutputStream src) — 파이프 출력 스트림 src에 연결된 스트림을 만들어요.
  • PipedInputStream(PipedOutputStream src, int pipeSize)src에 연결되고 지정한 파이프 크기를 사용하는 스트림을 만들어요.

메서드

  • int read() — 파이프에서 다음 바이트를 읽어요.
  • int read(byte[] b, int off, int len) — 최대 len 바이트를 바이트 배열로 읽어요.
  • int available() — 이 입력 스트림에서 블로킹 없이 읽을 수 있는 바이트 수를 반환해요.
  • void close() — 파이프 입력 스트림을 닫아요.
  • void connect(PipedOutputStream src) — 이 파이프 입력 스트림을 파이프 출력 스트림 src에 연결해요.

PipedInputStream은 스레드 간 통신, 즉 한 스레드가 생성하는 데이터를 다른 스레드가 소비하는 파이프라인을 만들 때 사용돼요.

더 알아보기 (Learn more)