我好象在 http://tech.sydn.net 中看到过

解决方案 »

  1.   

    是用于线程间通信的管道流吗?
    import java.io.*;
    class EOF
    {
    public static void main(String[] agrs) throws Exception
    {

    send x=new send();
    receive y=new receive();
    x.s.connect(y.r);
    new Thread(y).start(); //开启新线程,但此时管道中没有数据可读,所以该线程执行到r.read(b)时会被挂起 //new Thread(x).start();
    //System.out.println("ok"); Thread.sleep(1); //确保马上启动新线程 int i=0;
    while(i<10)
    {
    System.out.println(Thread.currentThread());
    Thread.sleep(1000);
    i++;
    }

    new Thread(x).start(); //开启另一个新线程,向管道中写数据

    }
    }class send implements Runnable
    {
    PipedOutputStream s=new PipedOutputStream();

    public void run() 
    {
    try
    {
             BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
                 s.write(b.readLine().getBytes("gb2312"));  //向管道中写数据
                 System.out.println("in send");
                 }
             catch(Exception e)
             {
             }
        

    }

    }class receive implements Runnable
    {
    PipedInputStream r=new PipedInputStream();

    public void run() 
    {
    try
    {

             byte b[]=new byte[1024];
             System.out.println("哈哈哈");
             int len=r.read(b);          //如果管道流中没有数据可读,则该线程处于等待状态,直到管道中有数据可读
             System.out.println(new String(b,0,len));
                 System.out.println("in receive");
            }
        
            catch(Exception e)
            {
            }
    }

    }