java中的管道和线程问题,大虾来帮忙啊:)
偶写地代码如下,为什么线程停不下来啊?
import java.io.*;
public class PipedTest
{
public static void main(String[] args)
{
try
{
PipedInputStream pisIn = new PipedInputStream();
PipedOutputStream posOut = new PipedOutputStream();
posOut.connect(pisIn);
Sender objSend = new Sender(posOut,args[0]);
Receiver objRec = new Receiver(pisIn);
objSend.start();
objRec.start();
}
catch(IOException e)
{
System.out.println("Error !"+e);
}
}
}
class Sender extends Thread
{
PipedOutputStream posOut;
File file;
Sender(PipedOutputStream posOut,String file)
{
this.posOut = posOut;
this.file = new File(file);
}
public void run()
{
try
{
FileInputStream fs = new FileInputStream(file);
int data;
data = fs.read();
while(data!=-1)
{
posOut.write(data);
data=fs.read();
}
posOut.close();
}
catch(IOException e)
{
System.out.println("sender error"+e);
}
}
}
class Receiver extends Thread
{
PipedInputStream pisIn;
Receiver(PipedInputStream pisIn)
{
this.pisIn = pisIn;
}
public void run()
{
try
{
int data;
int intTmp=0;
StringBuffer objStr = new StringBuffer();
data=pisIn.read();
while(data!=-1)
{
intTmp++;
if(intTmp%16==0) objStr.append(data+"\n");
objStr.append(data);
System.out.println(objStr);
data=pisIn.read();
}
pisIn.close();
}
catch(IOException e)
{
System.out.println("Receiver Error!"+e);
}
}
}