**管道---過濾器*

管道—過濾器管道-過濾器的詳細解說及其內容分析

NumFilter1 
import java.io. *;

public class NumFilter1 extends Thread {
      PipedWriter piped_writer;

      public NumFilter1(PipedWriter pw) {
          piped_writer = pw;
      }
      public void run() {

            try {
                    for (int j = 1; j<100; j++){
                        synchronized(this){
                              piped_writer.write(j ) ;
                              System.out.println(" " );
                              System.out.println("Filter 1 writing = " + j+"\n" );
                              Thread.sleep(1000);
                         }
                    }
                    piped_writer.write(-1) ;
            }
            catch(Exception e) {
            }
      }
}

/***************************************************************************/
NumFilter2

import java.io. *;


public class NumFilter2 extends Thread {
    PipedReader piped_reader;
    PipedWriter piped_writer;

    public NumFilter2(PipedReader pr, PipedWriter pw) {
         piped_reader = pr;
         piped_writer = pw;
    }

    public void run() {
          try {
             while (true) {
                 synchronized(this){
                     int c = piped_reader.read();
                     if ( c != -1){
                           System.out.println(" " );
                           System.out.println("Filter 2 reading = " + c );
                           int m = c+100;
                           piped_writer.write(m);
                           System.out.println("Filter 2 writing = " + m +"\n");
                           Thread.sleep(1000);
                     }
                     else
                           return;
                 }//sync
            }
         }
        catch(Exception e) {}
    }
}
`
/*********************************************************************************8/

import java.io. *;

public class NumFilter3 extends Thread {
PipedReader piped_reader;
PipedWriter piped_writer;

public NumFilter3(PipedReader pr, PipedWriter pw) {
     piped_reader = pr;
     piped_writer = pw;
}

public void run() {
      try {
         while (true) {
             synchronized(this){
                  int c = piped_reader.read();
                  if ( c != -1){
                         System.out.println(" "  );
                         System.out.println("Filter 3 reading = " + c );
                         int m = c+200;
                         piped_writer.write(m);
                         System.out.println("Filter 3 writing = " + m+"\n" );
                         Thread.sleep(1000);
                  }
                  else
                         return;
             }//sync
        }
     }
    catch(Exception e) {}
}

}
/***************************************************************************/


import java.io. *;

public class NumFilter4 extends Thread {
    PipedReader piped_reader;

    public NumFilter4(PipedReader pr) {
         piped_reader = pr;
    }
    public void run() {
          try {
             while (true) {
                 synchronized(this){
                      int c = piped_reader.read();
                      if ( c != -1){
                             System.out.println(" "  );
                             System.out.println("Filter 4 reading = " + c );
                             int m = c+300;
                             Thread.sleep(1000);
                      }
                      else
                             return;
                }//sync
            }
         }
        catch(Exception e) {}
    }
}
`/********************************************************************/
import java.io. *;

public class TestFilter {
       public static void main(String[] args) {
               PipedWriter pipe1_leftEnd = new PipedWriter();
               PipedReader pipe1_rightEnd  = null;
               PipedWriter pipe2_leftEnd = new PipedWriter();
               PipedReader pipe2_rightEnd  = null;
               PipedWriter pipe3_leftEnd  = new PipedWriter();
               PipedReader pipe3_rightEnd  = null;
               try{
                    pipe1_rightEnd = new PipedReader(pipe1_leftEnd);
                    pipe2_rightEnd = new PipedReader(pipe2_leftEnd);
                    pipe3_rightEnd = new PipedReader(pipe3_leftEnd);
               }
               catch(IOException io){  }

               //create filter objects
               NumFilter1 f1 = new NumFilter1(pipe1_leftEnd );
               NumFilter2 f2 = new NumFilter2(pipe1_rightEnd, pipe2_leftEnd);
               NumFilter3 f3 = new NumFilter3(pipe2_rightEnd, pipe3_leftEnd);
               NumFilter4 f4 = new NumFilter4(pipe3_rightEnd);

               f1.start();
               f2.start();
               f3.start();
               f4.start();
       }
}

“`

/*********************************************************************************88/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章