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();
}
}
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


