黑马程序员技术交流社区

标题: 关于管道流实现线程间通信的问题 [打印本页]

作者: 柳彬    时间: 2012-9-12 09:45
标题: 关于管道流实现线程间通信的问题
本帖最后由 柳彬 于 2012-9-24 08:02 编辑

关于管道流实现线程间通信的问题,大家帮忙举个具有实战的例子。要有源代码哦。
作者: 王金科    时间: 2012-9-12 20:45
  1. package cn.study.io;


  2. import java.io.IOException;
  3. import java.io.PipedInputStream;
  4. import java.io.PipedOutputStream;

  5. public class PipedStreamDemo {

  6.         /**
  7.          * @param args
  8.          * @throws IOException
  9.          */
  10.         public static void main(String[] args) throws IOException {
  11.                 // TODO Auto-generated method stub

  12.                 final PipedInputStream pis = new PipedInputStream();
  13.                 final PipedOutputStream pos = new PipedOutputStream();
  14.                
  15.                 Thread read = new Thread(){
  16.                         public void run(){
  17.                                 try {
  18.                                         byte[] buf = new byte[1024];
  19.                                         System.out.println("读取前,没有数据,等待...");
  20.                                         int len = pis.read(buf);
  21.                                         System.out.println("读到数据,打印数据...");
  22.                                         String str = new String(buf,0,len);
  23.                                         System.out.println(str);
  24.                                         pis.close();
  25.                                 } catch (IOException e) {
  26.                                         // TODO Auto-generated catch block
  27.                                         e.printStackTrace();
  28.                                 }
  29.                         }
  30.                 };
  31.                
  32.                 Runnable write = new Runnable(){
  33.                         public void run(){
  34.                                 try {
  35.                                         System.out.println("开始写入数据,等待6秒后...");
  36.                                         Thread.sleep(6000);
  37.                                         pos.write("piped lai la".getBytes());
  38.                                         pos.close();
  39.                                 } catch (Exception e) {
  40.                                         // TODO Auto-generated catch block
  41.                                         e.printStackTrace();
  42.                                 }
  43.                         }
  44.                 };
  45.                 pis.connect(pos);
  46.                 read.start();
  47.                 new Thread(write).start();               
  48.         }
  49. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2