java 程式設計學習之管道
阿新 • • 發佈:2018-11-22
管道的理解
java管道與unix/Linux的管道是不同的,在Unix/Linux中,在不同地址空間執行的兩個程序可以通過管道通訊。在Java中,通訊的雙方應該是執行在同一程序中的不同執行緒。Java IO中的管道為執行在同一個JVM中的兩個執行緒提供了通訊的能力。所以管道也可以作為資料來源以及目標媒介。–Jakob Jenkov 譯者: 李璟
管道主要的作用是用於兩個執行緒通訊,分為管道輸入流(PipedInputStream)和管道輸出流(PipedOutputStream),必須通過connect將輸入流和輸出流連結起來。
例子
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class PipeExample {
private static PipeExample ourInstance = new PipeExample();
public static PipeExample getInstance() {
return ourInstance;
}
private PipeExample() {
}
public static void main(String [] args) throws IOException {
final PipedOutputStream outputStream = new PipedOutputStream();
final PipedInputStream inputStream = new PipedInputStream();
// inputStream.connect(outputStream);
outputStream.connect(inputStream);
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
try {
outputStream.write("Hello world,pipe!".getBytes());
}catch (IOException e){
e.printStackTrace();
}
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
try{
int data = inputStream.read();
while (data != -1){
System.out.print((char)data);
data = inputStream.read();
}
}catch (IOException e) {
}
}
});
thread1.start();
thread2.start();
}
}