PipedInputStream的用途 请高手解释一下PipedInputStream的用途,例如,为什么要用它呢,什么情况下用它能带来好处。最好有个例子说服一下它的用法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。不建议对这两个对象尝试使用单个线程,因为这样可能会死锁该线程。传送输入流包含一个缓冲区,可在缓冲区限定的范围内将读操作和写操作分离开。 在Java的IO流中有一种很特殊的流就是管道流类:PipedInputStream PipedOutputStream.这两个类的实例对象必须要通过connect方法连接. 其实看这么一个程序就知道了管道流类的使用方法.//sender.javaimport java.io.*;import java.util.*;public class sender extends Thread{ PipedOutputStream out = new PipedOutputStream(); public PipedOutputStream getOut() { return out; } public void run() { String str = "Hello,receiver ! I`m sender\n"; try { out.write(str.getBytes()); out.close(); } catch(Exception e) { e.printStackTrace(); } }} //receiver.javaimport java.io.*;import java.util.*;public class receiver extends Thread{ PipedInputStream in = new PipedInputStream(); public PipedInputStream getIn() { return in; } public void run() { byte [] buf = new byte[1024]; try { int len = in.read(buf); System.out.println("the following is from sender:\n"+new String(buf,0,len)); in.close(); }catch(Exception e) { e.printStackTrace(); } }} //TestPiped.javaimport java.io.*;class TestPiped{ public static void main(String [] args) { sender s = new sender(); receiver r = new receiver(); PipedOutputStream out = s.getOut(); PipedInputStream in = r.getIn(); try { in.connect(out); s.start(); r.start(); } catch(Exception e) { e.printStackTrace(); } }}这个程序的功能是sender发送"Hello,receiver ! I`m sender"给receiver然后receiver接受后显示出来并且在前面加上"the following is from sender"的信息.要注意的就是PipedInputStream和PipedOutputStream分别用两个线程传送数据. 求高人指点,编译通不过,java和c混合编译的问题。 关于HttpSessionBindingListener的问题 SWT的多线程问题 一个小算法问题,求救,四个数字相加哦 复合查询问题,请高手帮忙 难道是SUN提供的类库有问题吗?受不了,快疯了。 java.lang.NullPointerException究竟是什么 java 里有没有类似vb里的replace的函数,用来生成编码过的文本,控制格式 请问哪里有eclipse 下载? 求助List的add()方法 CORBA 有关连接数据库的问题!
import java.util.*;
public class sender extends Thread
{
PipedOutputStream out = new PipedOutputStream();
public PipedOutputStream getOut()
{
return out;
}
public void run()
{
String str = "Hello,receiver ! I`m sender\n";
try
{
out.write(str.getBytes());
out.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
//receiver.javaimport java.io.*;
import java.util.*;
public class receiver extends Thread
{
PipedInputStream in = new PipedInputStream();
public PipedInputStream getIn()
{
return in;
}
public void run()
{
byte [] buf = new byte[1024];
try
{
int len = in.read(buf);
System.out.println("the following is from sender:\n"+new String(buf,0,len));
in.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
} //TestPiped.javaimport java.io.*;
class TestPiped
{
public static void main(String [] args)
{
sender s = new sender();
receiver r = new receiver();
PipedOutputStream out = s.getOut();
PipedInputStream in = r.getIn();
try
{
in.connect(out);
s.start();
r.start();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}这个程序的功能是sender发送"Hello,receiver ! I`m sender"给receiver然后receiver接受后显示出来并且在前面加上"the following is from sender"的信息.要注意的就是PipedInputStream和PipedOutputStream分别用两个线程传送数据.