領測軟件測試網
軟件測試技術門戶`vYz2X:`$v$MV1.4 解決問題
軟件測試技術門戶 Jr'oT_Ct要防止管道流前兩個局限所帶來的問題,方法之一是用一個ByteArrayOutputStream作為代理或替代PipedOutputStream。 Listing 4顯示了一個LoopedStreams類,它用一個ByteArrayOutputStream提供和Java管道流類似的功能,但不會出現死鎖和 IOException異常。這個類的內部仍舊使用管道流,但隔離了本文介紹的前兩個問題。我們先來看看這個類的公用方法(參見圖3)。構造函數很簡單,它連接管道流,然后調用startByteArrayReaderThread()方法(稍后再討論該方法)。getOutputStream()方法返回一個OutputStream(具體地說,是一個ByteArrayOutputStream)用以替代PipedOutputStream。寫入該 OutputStream的數據最終將在getInputStream()方法返回的流中作為輸入出現。和使用PipedOutputStream的情形不同,向ByteArrayOutputStream寫入數據的線程的激活、寫數據、結束不會帶來負面效果。
(i6c5Jqx(J1Q,s"|*A$N-F&B'L Y圖三:ByteArrayOutputStream原理
`)v%~`-Dq)i!Jyz軟件測試技術門戶[s0W$XQOKw6`_軟件測試技術門戶J#j+i;`my【Listing 4:防止管道流應用中出現的常見問題】
BRL%zRimport java.io.*;
(NyuL heowpublic class LoopedStreams {
軟件測試技術門戶S2x;Y0xBr
GP private PipedOutputStream pipedOS =
軟件測試技術門戶L~&QG;{TN new PipedOutputStream();
Y?
Cs
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月