java中PipedOutputStream和PipedInputStream类用法



大概就是这么个意思:两个线程需要通信,就是传写数据啊什么的给另外一个线程,PipleOutputString负责输出数据,  outStream.write(info.getBytes());(貌似必须是byte的,这才符合计算机内存的最原始的规则),PipleInputStrieam负责输入,两者都是在程序中进行的,这一点与FileInputStream不同,它读取传递进入管道的数据,  int len = inStream.read(buf);,PipleOutPutStream写的对象是想要传递的数据,需要先将其转换成byte类型的格式,接收处需要byte类型的but接受数据

import java.io.*;


  1. public class PipedStreamTest {
        public static void main(String [] args) {
            Sender sender = new Sender();
            Receiver receiver = new Receiver();
            
            PipedOutputStream outStream = sender.getOutStream();
            PipedInputStream inStream = receiver.getInStream();
            
            try {
                //inStream.connect(outStream); // 与下一句一样
                outStream.connect(inStream);
            } catch (Exception e) {
                e.printStackTrace();
            }
            
            sender.start();
            receiver.start();
        }
    }

    class Sender extends Thread {
        private PipedOutputStream outStream = new PipedOutputStream();
        
        public PipedOutputStream getOutStream() {
            return outStream;
        }
        
        public void run() {
            String info = "hello, receiver";
            
            try {
                outStream.write(info.getBytes());
                
                outStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    class Receiver extends Thread {
        private PipedInputStream inStream = new PipedInputStream();
        
        public PipedInputStream getInStream() {
            return inStream;
        }
        
        public void run() {
            byte[] buf = new byte[1024];
            
            try {
                int len = inStream.read(buf);
                
                System.out.println("receive message from sender : " + new String(buf, 0, len));
                
                inStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }    
    }

你可能感兴趣的:(JAVA)