程序例子分为三个类,Sender(发送者),Receiver(接收者),PipedTest(测试类),以下是代码:
Sender类
Sender类
import java.io.IOException;
import java.io.PipedOutputStream;
/**
* Sender线程类通过向管道写入数据
*/
public class Sender extends Thread {
private PipedOutputStream out = new PipedOutputStream();
//创建管道输出流对象
public PipedOutputStream getPipedOut()
{
return out;
}
/*
线程启动
*/
public void run()
{
String s = "JAVA!";
try
{
out.write(s.getBytes()); //往管道写入数据,write(byte[])方法
System.out.println( "数据已发送,请接收!");
out.close();
} catch(IOException e)
{
e.printStackTrace();
}
}
}
Received类
测试类
import java.io.PipedOutputStream;
/**
* Sender线程类通过向管道写入数据
*/
public class Sender extends Thread {
private PipedOutputStream out = new PipedOutputStream();
//创建管道输出流对象
public PipedOutputStream getPipedOut()
{
return out;
}
/*
线程启动
*/
public void run()
{
String s = "JAVA!";
try
{
out.write(s.getBytes()); //往管道写入数据,write(byte[])方法
System.out.println( "数据已发送,请接收!");
out.close();
} catch(IOException e)
{
e.printStackTrace();
}
}
}
Received类
import java.io.IOException;
import java.io.PipedInputStream;
/**
* Receiver线程类从管道读取数据
*/
public class Receiver extends Thread {
private PipedInputStream in = new PipedInputStream();
//创建管道输出流对象
public PipedInputStream getPipedIn()
{
return in;
}
public void run()
{
byte[] b = new byte[1024];
try
{
int len = in.read(b); //从管道输入流读取数据
System.out.print( "数据已接受:");
System.out.println( new String(b, 0 ,len)); //终端打印出已接收数据
in.close();
} catch(IOException e)
{
e.printStackTrace();
}
}
}
import java.io.PipedInputStream;
/**
* Receiver线程类从管道读取数据
*/
public class Receiver extends Thread {
private PipedInputStream in = new PipedInputStream();
//创建管道输出流对象
public PipedInputStream getPipedIn()
{
return in;
}
public void run()
{
byte[] b = new byte[1024];
try
{
int len = in.read(b); //从管道输入流读取数据
System.out.print( "数据已接受:");
System.out.println( new String(b, 0 ,len)); //终端打印出已接收数据
in.close();
} catch(IOException e)
{
e.printStackTrace();
}
}
}
测试类
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
/**
* 测试两个线程通过管道交换数据
*/
public class PipedTest {
public static void main(String[] args){
Sender send = new Sender();
Receiver rec = new Receiver();
PipedOutputStream out = send.getPipedOut();
PipedInputStream in = rec.getPipedIn();
try
{
out.connect(in); //连接两个管道,in和out可以互换,会抛出异常
} catch(IOException e)
{
e.printStackTrace();
}
/*
启动这两个线程
*/
send.start();
rec.start();
}
}
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
/**
* 测试两个线程通过管道交换数据
*/
public class PipedTest {
public static void main(String[] args){
Sender send = new Sender();
Receiver rec = new Receiver();
PipedOutputStream out = send.getPipedOut();
PipedInputStream in = rec.getPipedIn();
try
{
out.connect(in); //连接两个管道,in和out可以互换,会抛出异常
} catch(IOException e)
{
e.printStackTrace();
}
/*
启动这两个线程
*/
send.start();
rec.start();
}
}
转载于:https://blog.51cto.com/zhuhanshan/124890