管道流
Java本身是属于多纯种的编程语言,而多线程和多进程最大的区别在于:一个进程可以产生多个线程,那么这些线程都属于同一个进程中的组成单元,所以这些线程都可以直接共享给定进程里面的所有资源,包括数据,但是在Java里面它强调不同的线程有可能也有属于自己的内容,所以不同线程之间也应该利用管道的方式来进行处理。
Java代码:
package com.yootk.demo;
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
class SendThread implements Runnable {
private PipedOutputStream output = new PipedOutputStream() ; // 管道输出流
@Override
public void run() {
try {
// 通过管道实现数据的发送
this.output.write("李兴华编程训练营:yootk.ke.qq.com".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
public PipedOutputStream getOutput() {
// 通过子类操作
return this.output ;
}
}
class ReceiveThread implements Runnable {
private PipedInputStream input = new PipedInputStream() ; // 管道输入流
@Override
public void run() {
try {
byte data [] = new byte [1024] ;
int len = this.input.read(data) ; // 接收管道的数据
System.out.println("【接收到消息】" + new String(data, 0, len));
} catch (IOException e) {
e.printStackTrace();
}
}
public PipedInputStream getInput() {
return this.input ;
}
}
public class YootkDemo {
// 李兴华编程训练营:yootk.ke.qq.com
public static void main(String[] args) throws Exception {
SendThread send = new SendThread() ; // 发送线程
ReceiveThread receive = new ReceiveThread() ; // 接收线程
send.getOutput().connect(receive.getInput()); // 管道连接
new Thread(send).start();
new Thread(receive).start();
}
}