這并不意味著在一次write()調用中不能寫入多于1024字節的數據。但應當保證,在寫入數據的同時,有另一個線程從PipedInputStream讀取數據。
Listing 2示范了這個問題。這個程序用一個線程交替地讀取PipedInputStream和寫入PipedOutputStream。每次調用write()向 PipedInputStream的緩沖區寫入20字節,每次調用read()只從緩沖區讀取并刪除10個字節。內部緩沖區最終會被寫滿,導致寫操作阻塞。由于我們用同一個線程執行讀、寫操作,一旦寫操作被阻塞,就不能再從PipedInputStream讀取數據。
【Listing 2:用同一個線程執行讀/寫操作導致線程阻塞】
import java.io.*;
public class Listing2 {
static PipedInputStream pipedIS = new PipedInputStream();
static PipedOutputStream pipedOS =
new PipedOutputStream();
public static void main(String[] a){
try {
pipedIS.connect(pipedOS);
}
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/