本文部分摘自《Java 并發編程的藝術》
管道輸入 / 輸出流
管道輸入 / 輸出流和普通的檔案輸入 / 輸出流或者網路輸入 / 輸出流不同之處在于,它主要用于執行緒之間的資料傳輸,而傳輸媒介為記憶體
管道輸入 / 輸出流主要包括如下四種具體實作:
- PipedOutputStream、PipedInputStream
- PipedReader、PipedWriter
前兩種面向位元組,后兩種面向字符
下面的例子中,main 執行緒通過 PipedWriter 向 printThread 執行緒寫入資料,printThread 執行緒通過 PipedReader 將讀取資料并列印
public class Piped {
public static void main(String[] args) throws IOException {
PipedWriter out = new PipedWriter();
PipedReader in = new PipedReader();
// 將輸入流和輸出流進行連接,否則在使用時會拋出 IOException
out.connect(in);
Thread printThread = new Thread(new Print(in), "PrintThread");
printThread.start();
int receive = 0;
try {
while ((receive = System.in.read()) != -1) {
out.write(receive);
}
} finally {
out.close();
}
}
static class Print implements Runnable {
private PipedReader in;
public Print(PipedReader in) {
this.in = in;
}
@Override
public void run() {
int receive = 0;
try {
while ((receive = in.read()) != -1) {
System.out.print((char) receive);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
運行結果如下

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/262350.html
標籤:Java
上一篇:如何優雅地處理重復(并發)請求?
下一篇:面試被問離職原因該怎么回答?
