Java IO 管道 Pipes
java中Pipes提供了线程之间通信的能力。Pipes可以是数据源,也可以是输出目标。
不能使用管道与不同JVM(不同进程)中的线程进行通信。
Java中的管道概念与Unix / Linux中的管道概念不同,Unix / Linux中的管道在不同地址空间中运行的两个进程可以通过管道进行通信。
在Java中,通信双方必须在同一个进程中运行,并且应该是不同的线程。
通过PipedOutputStream/PipedInputStream 创建管道
通过PipedOutputStream和PipedInputStream类创建管道,将PipedInputStream连接到PipedOutputStream。一个线程写入PipedOutputStream的数据可以被另一个线程从连接的PipedInputStream读取。
如下代码示例:
public static void main(String[] args) throws Exception {
PipedOutputStream pos = new PipedOutputStream();
PipedInputStream pis = new PipedInputStream();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
//将 PipedInputStream 连接到 PipedOutputStream
pis.connect(pos);
byte[] data = new byte[1024];