Sender t1=new Sender();
Receiver t2=new Receiver();
PipedOutputStream out=t1.getOutputStream();
PipedInputStream in=t2.getInputStream();
out.connect(in);
t1.start();
t2.start();我不懂 out.connect(in);他到底干了什么 通过jdk也没有看出个所以然
可以解释下吗 请说的详细点
Receiver t2=new Receiver();
PipedOutputStream out=t1.getOutputStream();
PipedInputStream in=t2.getInputStream();
out.connect(in);
t1.start();
t2.start();我不懂 out.connect(in);他到底干了什么 通过jdk也没有看出个所以然
可以解释下吗 请说的详细点
PipedInputStream in=t2.getInputStream();
out.connect(in); 这里指的是输入流
public class PipedStreamTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
PipedOutputStream pos=new PipedOutputStream();
PipedInputStream pis=new PipedInputStream();
try{
pos.connect(pis);
new pro(pos).start();
new cxx(pis).start();
}
catch(Exception e)
{e.printStackTrace();} }}
class pro extends Thread
{
private PipedOutputStream pos;
public pro( PipedOutputStream pos)
{
this.pos=pos;
}
public void run()
{
try{
pos.write("www.kaka.com".getBytes());
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
class cxx extends Thread
{
private PipedInputStream pis;
public cxx(PipedInputStream pis)
{
this.pis=pis;
}
public void run()
{
try{
byte[] buf=new byte[100];
int len=pis.read(buf);
System.out.println(new String(buf,0,len));
pis.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public class PipedStreamTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
PipedOutputStream pos=new PipedOutputStream();
PipedInputStream pis=new PipedInputStream();
try{
pos.connect(pis);
new pro(pos).start();
new cxx(pis).start();
}
catch(Exception e)
{e.printStackTrace();} }}
class pro extends Thread
{
private PipedOutputStream pos;
public pro( PipedOutputStream pos)
{
this.pos=pos;
}
public void run()
{
try{
pos.write("www.kaka.com".getBytes());
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
class cxx extends Thread
{
private PipedInputStream pis;
public cxx(PipedInputStream pis)
{
this.pis=pis;
}
public void run()
{
try{
byte[] buf=new byte[100];
int len=pis.read(buf);
System.out.println(new String(buf,0,len));
pis.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
管道用来把一个程序、线程和代码块的输出连接到另一个程序、线程和代码块的输入。java.io中提供了类PipedInputStream和PipedOutputStream作为管道的输入/输出流
管道输入流作为一个通信管道的接收端,管道输出流则作为发送端。管道流必须是输入输出并用,即在使用管道前,两者必须进行连接
管道输入/输出流可以用两种方式进行连接:
在构造方法中进行连接
PipedInputStream(PipedOutputStream pos);
PipedOutputStream(PipedInputStream pis);
通过各自的connect()方法连接
在类PipedInputStream中,connect(PipedOutputStream pos);
在类PipedOutputStream中,connect(PipedInputStream pis);