使用管道通訊時,必須將PipedOutputStream和PipedInputStream配套使用 css |
大體流程: web 咱們在線程A中向PipedOutputStream中寫入數據,這些數據會自動的發送到與PipedOutputStream對應的PipedInputStream中,進而存儲在PipedInputStream的緩衝中; 數組 線程B經過讀取PipedInputStream中的數據 spa |
對照到我上面畫的圖就是這樣: 線程 |
PipedReader PipedWriter 基本原理和工做流程 |
PipedWriter中有一個 PipedReader sink成員變量
PipedReader 中有一個緩衝區char buffer[] 能夠用於保存數據
他們本質上操做的都是這個緩衝區
PipedReader操做的本身的緩衝區
PipedWriter 操做的是PipedReader 的緩衝區
PipedWriter 須要和PipedReader進行鏈接,或者在構造的時候直接鏈接
鏈接以後,就造成了一個管道 (其實就是PipedWriter 內部能夠調用PipedReader 的方法)
PipedWriter 寫入的數據,能夠經過PipedReader 進行讀取
|
connect方法,根本形式只有一種 無論是PipedWriter鏈接PipedReader 仍是 PipedReader 鏈接 PipedReader |
![]() |
首先真正的將PipedReader和PipedWriter進行鏈接,也就是設置sink 而後就是設置in和out 他們是寫入PipedReader中的緩衝區和從緩衝區讀取的索引號 而後就是標誌已經鏈接成功了 |
PipedReader 提供了兩個版本的read方法 讀取一個字符 或者讀取指定個數的字符數目 保存到指定的數組,到她的指定的位置 public synchronized int read() throws IOException public synchronized int read(char cbuf[], int off, int len) throws IOException |