java管道流的讀寫操作,用於兩個線程之間的通信 – JAVA編程語言程序開發技術文章

/* java 管道流的讀寫操作 用於兩個線程之間  
 PipedOutputStream    PipedInputStream  連接起來就是一個管道   
 管道輸出流可以向管道寫入數據   管道輸入流可以從管道讀取數據   
 這種Decorator 裝飾 的設計模式 大大增強瞭java流的功能
 可以在構造流的時候連接 管道輸入輸出流 也可以通過connect函數連接

*/
import java.io.*  ;
class  PipeTest
{
 public  static   void main(String []args)  throws Exception
 {
     PipedInputStream pis=new PipedInputStream() ;   //構造管道輸入流
     PipedOutputStream pos=new  PipedOutputStream(pis); //構造輸出流並且連接輸入流形成管道
     new Procedure(pos).start() ;  //線程啟動
     new Consumer(pis).start();  //線程啟動
   
 }
}

class  Procedure  extends Thread   //線程1管道 輸出流
{
   private  PipedOutputStream  pos ;
   Procedure(PipedOutputStream  pos)
   {
         this.pos=pos ;
   }
    public  void run()
   {
         try
         {
            pos.write("hello! welcome you!".getBytes());  //向管道寫入 數據
         }
         catch(Exception e)
         {         
           e.printStackTrace();
         }
   }
 
 
}

class  Consumer  extends  Thread
{
 private  PipedInputStream pis ;
 Consumer(PipedInputStream pis)
 {
      this.pis=pis ;
 }
 public   void  run()
 {
       try
       { 
          
           byte []buf=new byte[100] ;
           int len=pis.read(buf,0,100);            //從管道讀取數據
           System.out.println(new String(buf,0,len)); 
        }
       catch(Exception e)
       {
           e.printStackTrace() ;
       }
    
 
 }
 
 
 
 
 
 
 
 
}

發佈留言