2014-04-26 3 views
0

PipedOutputStream의 생산자 스레드에서 wait() - 신호를 Receiver Thread에 보내어 Notify() - Singal이 Producer Thread에서 나올 때까지 수신기가 "잠자기"상태가되도록 할 수 있습니까?Java : PipedOutputStream에서 Thread.wait() 및 Thread.notify()를 보낼 수 있습니까?

작업은 생산자가 스트림에 바이트를 넣자 마자 수신기의 InputStream을 확인하는 것입니다. 수용 실에 read 호출을 수행하면

답변

0

은 "수신기"는 다음 중 하나가 될 때까지 "슬립"모드 (또한 "차단") 될 것이다 발생 :

  1. 은 "송신기"는 닫혀 스트림.
  2. "수신자"가 실행되는 스레드가 인터럽트됩니다.
  3. "보낸 사람"이 뭔가를 스트림 아래로 보냅니다.

"수신자"의 동작을 제어 할 수있는 유일한 방법입니다.

신호를 전달할 수 있어야한다고 생각하면 가장 잘못된 것이 있습니다.

+0

최상의 옵션은 스레드가 인터럽트하고 나중에 다시 시작하는 것입니다. 그러나 과제는 스레드가 주 스레드에서 시작해야하며 종료되지 않아야한다고 말했습니다. –

+0

필자가 생각할 수있는 유일한 옵션은 새로운 입력에 대해 InputStream을 지속적으로 확인하는 것입니다. 또는? –

+0

@ user3302074 아니요, 그렇게하지 않아도됩니다. 단지'read' 메소드를 호출하기 만하면됩니다. 'read' 메소드는 입력이 수신 될 때까지 블록합니다. – Isaac