PipedInputStream和Out解决生产者-消费者问题

  class   sender   extends   Thread 
{ 
              PipedOutputStream   out   =   new   PipedOutputStream(); 
              public   PipedOutputStream   getOut() 
                { 
                        return   out; 
              } 
              public   void   run() 
              { 
                        String   str   =   "Hello,receiver   !   I`m   sender\n "; 
                          try 
                          { 
                                    out.write(str.getBytes()); 
                                    out.close(); 
                        } 
                          catch(Exception   e) 
                        { 
                                      e.printStackTrace(); 
                          } 
                } 
} 
                                                                                    //receiver.java 


  class   receiver   extends   Thread 
{ 
                      PipedInputStream   in   =   new   PipedInputStream(); 
                    public   PipedInputStream   getIn() 
                      { 
                                    return   in; 
                      } 
                      public   void   run() 
                      { 
                                    byte   []   buf   =   new   byte[1024]; 
                                    try 
                                    { 
                                                  int   len   =   in.read(buf); 
                                                  
                                                System.out.println( "the   following   is   from   sender:\n "+new   String(buf,0,len)); 
                                                in.close(); 
                                    }catch(Exception   e) 
                                    { 
                                                e.printStackTrace(); 
                                      } 
                        } 
} 

                                                                                        //TestPiped.java 


class   TestPiped 
{ 
                      public   static   void   main(String   []   args) 
                      { 
                                    sender   s   =   new   sender(); 
                                  receiver   r   =   new   receiver(); 
                                  PipedOutputStream   out   =   s.getOut(); 
                                    PipedInputStream   in   =   r.getIn(); 
                                  try 
                                  { 
                                                    in.connect(out); 
                                                  s.start(); 
                                                  r.start(); 
                                    } 
                                  catch(Exception   e) 
                                  { 
                                                e.printStackTrace(); 
                                  } 
                      } 
} 

 

转载于:https://www.cnblogs.com/totem1990/archive/2012/09/25/2701194.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值