1. 程式人生 > >java 程式設計學習之管道

java 程式設計學習之管道

管道的理解

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(); } }