线程通信
来源:互联网 发布: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); } } }