线程通信

来源:互联网 发布:js for in 编辑:程序博客网 时间:2024/05/17 01:22

PipedIO:

package ThreadCommunication;    import java.io.*;public class PipedIO {            public static void main(String[] args) {// TODO Auto-generated method stub            try{                PipedInputStream pis = new PipedInputStream();                PipedOutputStream pos = new PipedOutputStream();                pos.connect(pis);                new Sender(pos, "sendFile").start();                new Receiver(pis, "receiveFile").start();            }catch(IOException e){                System.out.println("piped error:"+e);            }        }    }

Receiver:

package ThreadCommunication;  import java.io.*;      public class Receiver extends Thread {        PipedInputStream pis;      File file;      Receiver(PipedInputStream pis, String file) {          this.pis = pis;          this.file = new File(file);      }            public void run() {          try {              FileOutputStream fs = new FileOutputStream(file);              int i = pis.read();              int j = 0;              while(j<i) {                  int data = pis.read();                  fs.write(data);                  j ++;              }              pis.close();          }catch (IOException e) {              System.out.println("Sender error:"+e);          }      }  }

Sender:

package ThreadCommunication;    import java.io.*;    public class Sender extends Thread {            PipedOutputStream pos;      File file;      Sender(PipedOutputStream pos, String file) {          this.pos = pos;          this.file = new File(file);      }            public void run() {          try {              FileInputStream fs = new FileInputStream(file);              int i = (int)file.length();              pos.write(i);              int j = 0;              while(j<i) {                  int data = fs.read();                  pos.write(data);                  j ++;              }          }catch (IOException e) {              System.out.println("Sender error:"+e);          }      }  }


原创粉丝点击