PipedInputStream — 파이프 입력 스트림
PipedInputStream — 파이프 입력 스트림
PipedInputStream은 파이프 출력 스트림에 연결되어야 해요. 그러면 파이프 출력 스트림에 쓰여진 모든 데이터 바이트를 제공합니다. 보통 한 스레드가 PipedInputStream 객체에서 데이터를 읽고, 다른 스레드가 대응하는 PipedOutputStream에 데이터를 써요. 두 객체를 단일 스레드에서 모두 사용하려는 것은 데드락을 일으킬 수 있어 권장하지 않아요.
본문
파이프 입력 스트림은 한계 내에서 읽기 연산과 쓰기 연산을 분리하는 버퍼를 포함해요. 연결된 파이프 출력 스트림에 데이터 바이트를 공급하던 스레드가 더 이상 살아 있지 않으면 파이프가 "깨졌다(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은 스레드 간 통신, 즉 한 스레드가 생성하는 데이터를 다른 스레드가 소비하는 파이프라인을 만들 때 사용돼요.