PipedInputStream & PipedOutputStream

    技术2022-05-18  17

    PipedInputStream & PipedOutputStream

     

    主要用于两个线程之间传递数据。两个线程,一个保持PipedInputStream,一个保持PipedOutputStream引用。 PipedOutputStream写入的数据先缓存在Buffer中,如果Buffer满,此线程wait。 PipedInputStream读出Buffer中的数据,如果Buffer没数据,此线程wait。

     

    使用例子:

    import java.io.PipedInputStream; import java.io.PipedOutputStream; public class ReadPipeSteam { public static void main(String[] args) { PipedInputStream pis = new PipedInputStream(); PipedOutputStream pos = new PipedOutputStream(); try { pos.connect(pis); } catch (Exception e) { e.printStackTrace(); } Producer producer = new Producer(pos); Consumer con = new Consumer(pis); producer.run(); con.run(); } } class Producer implements Runnable { PipedOutputStream pos; public Producer(PipedOutputStream pos){ this.pos = pos; } public void run() { try { pos.write("Producer generator .".getBytes()); pos.close(); } catch (Exception e) { e.printStackTrace(); } } } class Consumer implements Runnable { PipedInputStream pis; public Consumer(PipedInputStream pis){ this.pis = pis; } public void run() { try { byte[] bytes = new byte[100]; int length = pis.read(bytes); System.out.println(new String(bytes, 0, length)); } catch (Exception e) { e.printStackTrace(); } } }


    最新回复(0)