PipedInputStream
和PipedOutputStream
用於線程間數據傳輸。 「通過一個線程從PipedInputStream
對象中讀取數據,並通過其他線程將數據寫入相應的PipedOutputStream
」。非阻塞的PipedStreams?
到目前爲止,這麼好。我從這個範例中看到的一個潛在的好處是零星生產者(OutputStream
)不需要被慢速消費者放慢(InputStream
)。換句話說,在OutputStream
突然產生大量消費者無法立即消費的數據的時候,OutputStream
不需要等待生成的數據在完成其生命之前完全消耗。
問題1:我的理解是否正確?這是PipedStreams結構的好處之一嗎?
如果回答問題1是肯定的,那麼:
這種運作良好,當緩衝區未滿,但是當緩衝區已滿,在JDK6的實施中,的PipedOutputStream塊,並等待更多的空間來自由向上。這打破了我上面提到的目的,不是嗎?
這個問題似乎很容易通過改變完整緩衝區等待新空間分配更大緩衝區的行爲來解決。我可以在幾分鐘內實現一個,但如果這樣的東西已經可用,我不想重新發明輪子。我搜索了很多,但是找不到任何東西,這對我來說是非常令人驚訝的。
有人能指點我正確的方向嗎?或者指出我的想法在哪裏?
感謝
不詢問保證。只是說緩衝區大小可調是一個簡單而有用的改進,我想知道爲什麼沒有人寫過一個並使其可用。 – RAY