Java IO之管道简介说明
Java IO管道的功能说明
Java IO中管道可以为同一个JVM中两个线程提供通信操作 ---------------------------------------------------- 注意事项: 1.IO管道不能为不同的JVM提供通信,也不可以为不同的进程之间提供通信, 2.Java IO管道的通信两端必须处于同一个进程中的不同线程上
Java IO创建管道
Java IO中创建管道的方法: 在Java IO中使用PipedOutputStream和PipedInputStream创建管道 一个PipedInputStream流应同一个PipedOutputStream流关联 一个线程通过PipedOutputStream写入的数据可以被另一个线程通过相关联的PipedInputStream读取出来
Java IO管道
package com.java265.other; import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; public class Test { /* * java265.com PipedOutputStream 示例分享 */ public static void main(String[] args) throws IOException { // 创建一个发送者对象 Sender sender = new Sender(); // 创建一个接收者对象 Receiver receiver = new Receiver(); // 获取输出管道流 PipedOutputStream outputStream = sender.getOutputStream(); // 获取输入管道流 PipedInputStream inputStream = receiver.getInputStream(); // 链接两个管道,这一步很重要,把输入流和输出流联通起来 outputStream.connect(inputStream); // 启动发送者线程 sender.start(); // 启动接收者线程 receiver.start(); } } /** * 发送线程 */ class Sender extends Thread { // 声明一个 管道输出流对象 作为发送方 private PipedOutputStream outputStream = new PipedOutputStream(); public PipedOutputStream getOutputStream() { return outputStream; } @Override public void run() { String msg = "this is java265.com"; try { outputStream.write(msg.getBytes()); } catch (IOException e) { e.printStackTrace(); } finally { try { // 关闭输出流 outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 接收线程 */ class Receiver extends Thread { // 声明一个 管道输入对象 作为接收方 private PipedInputStream inputStream = new PipedInputStream(); public PipedInputStream getInputStream() { return inputStream; } @Override public void run() { byte[] buf = new byte[1024]; try { // 通过read方法 读取长度 int len = inputStream.read(buf); System.out.println(new String(buf, 0, len)); } catch (IOException e) { e.printStackTrace(); } finally { try { // 关闭输入流 inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。