- 以内存为媒介,用于线程之间的数据传输。
- 主要有面向字节:【PipedOutputStream、PipedInputStream】、面向字符【PipedReader、PipedWriter】
-
package com.xdclass.communication.demo3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PipedInputStream; import java.util.stream.Collectors; public class Reader implements Runnable{ private PipedInputStream pipedInputStream; public Reader(PipedInputStream pipedInputStream){ this.pipedInputStream = pipedInputStream; } @Override public void run() { if(pipedInputStream!=null){ String collect = new BufferedReader(new InputStreamReader(pipedInputStream)).lines().collect(Collectors.joining("\n")); System.out.println(Thread.currentThread().getName()+":"+collect); } try { pipedInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } }
-
package com.xdclass.communication.demo3; import java.io.*; public class Main { public static void main(String[] args) throws IOException { PipedInputStream pipedInputStream = new PipedInputStream(); PipedOutputStream pipedOutputStream = new PipedOutputStream(); pipedOutputStream.connect(pipedInputStream); new Thread(new Reader(pipedInputStream)).start(); BufferedReader bufferedReader = null; try{ bufferedReader = new BufferedReader(new InputStreamReader(System.in)); pipedOutputStream.write(bufferedReader.readLine().getBytes()); }finally { pipedOutputStream.close(); if(bufferedReader!=null){ bufferedReader.close(); } } } }