package io;import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;
/**
* @ClassName: PipedStreamDome
* @Author: Xlu103
* @Date: 2020-06-03 22:39
**/
public class PipedStreamDome {
public static void main(String[] args) throws IOException {
SpendThread spendThread = new SpendThread();
ReceiveThread receiveThread = new ReceiveThread();
//管道连接,发送那一方去连接。
spendThread.getPout().connect(receiveThread.getPin());
new Thread(spendThread, "发送!!").start();
new Thread(receiveThread, "接收!!").start();}}
class SpendThread implements Runnable {
private PipedOutputStream pout;
public PipedOutputStream getPout(){return pout;}
public SpendThread(){
this.pout = new PipedOutputStream();}
@Override
public void run(){
try {
this.pout.write("Xlu最帅!!!!".getBytes());} catch (IOException e){
e.printStackTrace();}
try {
this.pout.close();} catch (IOException e){
e.printStackTrace();}}}
class ReceiveThread implements Runnable {
private PipedInputStream pin;
public PipedInputStream getPin(){return pin;}
public ReceiveThread(){
this.pin = new PipedInputStream();}
@Override
public void run(){
int len = 0;
byte[] inputByte = new byte[1024];
try {
len = this.pin.read(inputByte);
System.out.println(Thread.currentThread().getName()+new String(inputByte, 0, len));} catch (IOException e){
e.printStackTrace();}}}
二、注意事项
1.输入方连接输入(out连in)
2.没连接抛异常(connect)
java.io.IOException: Pipe not connected
at java.io.PipedInputStream.read(PipedInputStream.java:305)
at java.io.PipedInputStream.read(PipedInputStream.java:377)
at java.io.InputStream.read(InputStream.java:101)
at io.ReceiveThread.run(PipedStreamDome.java:69)
at java.lang.Thread.run(Thread.java:748)
java.io.IOException: Pipe not connected
at java.io.PipedOutputStream.write(PipedOutputStream.java:140)
at java.io.OutputStream.write(OutputStream.java:75)
at io.SpendThread.run(PipedStreamDome.java:39)
at java.lang.Thread.run(Thread.java:748)
Process finished with exit code 0