Java I/O 管道流实现线程间的通讯例子

来源:互联网 发布:即时通讯app源码 编辑:程序博客网 时间:2024/04/30 10:53

Man 线程对 Woman 线程 说 I Love You,然后Woman 线程接收并打印出来


import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;/** * 管道输出流,用于输出数据  * @author L.Eric */class Man implements Runnable{private PipedOutputStream pos = new PipedOutputStream();public PipedOutputStream getOutputSteam(){return pos;}@Overridepublic void run() {String data = "I love you";try {pos.write(data.getBytes());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if(pos != null) {try {pos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}/** * 管道输入流,用于接收输入的数据 * @author L.Eric * */class Woman implements Runnable{private PipedInputStream pis = new PipedInputStream();public PipedInputStream getIntputStream(){return pis;}@Overridepublic void run() {int len = 0;byte[] buff = new byte[1024];try {while((len = pis.read(buff, 0, buff.length)) != -1) {System.out.println(new String(buff, 0, len));}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if(pis != null) {try {pis.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}/** * 管道流用于两个线程之间的通信,交换数据 * Man 线程对 Woman 线程 说 I Love You,然后Woman 线程接收并打印出来 * @author L.Eric * */public class PipedStreamDemo {public static void main(String[] args) throws IOException {Man man = new Man();Woman woman = new Woman();/** * 建立管道 * */woman.getIntputStream().connect(man.getOutputSteam());//启动两个个线程new Thread(man).start();new Thread(woman).start();}}


原创粉丝点击