**管道---过滤器*

来源:互联网 发布:魅族有哪些网络授权店 编辑:程序博客网 时间:2024/04/27 22:40

管道—过滤器管道-过滤器的详细解说及其内容分析

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/

0 0