A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 柳彬 中级黑马   /  2012-9-12 09:45  /  908 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 柳彬 于 2012-9-24 08:02 编辑

关于管道流实现线程间通信的问题,大家帮忙举个具有实战的例子。要有源代码哦。

1 个回复

倒序浏览
  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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马