2011-11-17 5 views
3

자바에서 다중 상속을 가지고 있지 않고 스트림 둘 다 인터페이스 대신 추상 클래스이므로 Java에서 Pipe 객체를 만드는 데 좋은 제안이 있습니까?자바 입력 출력 스트림

+2

어쩌면을 ... (Gang of Four 1995 : 20) – blank

답변

3
+0

Javadoc은 "스레드를 교착 상태로 만들 수 있으므로 단일 스레드에서 두 객체를 모두 사용하려고 시도하는 것은 좋지 않습니다"라고 명시 적으로 설명합니다. 무슨 일이 일어나는가'PipedInputStream.read()'는 연결된'PipedOutputStream.write()'가 다른 스레드에서 호출 될 때까지 호출하는 스레드를 차단합니다. – Matthieu

0

당신은 모두 입력 -과 출력 - 스트림으로 사용하는 인스턴스가되지 않습니다. 대신에, 읽기 용으로 InputStream을 캡슐화 (즉, 구성)하고 쓰기 용으로 OutputStream을 사용하는 Pipe 객체를 가질 수 있습니다.

표준 API에 System.inSystem.out과 거의 같습니다. 기성품 구현

또는 PipedInputStreamPipedOutputStream

1

체크 Pipe 클래스 조금 걱정된다.

이 경우 입력 스트림과 출력 스트림이있는 클래스가 있습니다. 무엇이든 확장하거나 인터페이스를 사용할 필요가 없습니다.

이 작업을 수행하는 코드를 변경 한 후, 상속 대 구성에 대한이 문서 읽기 : ". '클래스 상속'을 통해 찬성 '개체 구성'" http://www.artima.com/lejava/articles/designprinciples4.html

0

이 여러 상속을하지 않아도 좋은 경우에, 당신이 그런 식으로 질문을한다는 사실을