管道流|学习笔记

简介: 快速学习 管道流

开发者学堂课程【Java 高级编程管道流】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/20/detail/324


管道流


内容简介:

1. 管道流介绍

2. 管道流的分类

3. 范例:实现管道操作

 

管道流介绍

实现两个线程之间的 IO 处理操作

图片15.png


管道流的分类

对于管道流也是分为两类:

· 字节管道流:PipedOutputStream、PipedInputStream;

连接处理:public void connect(PipedInputStream snk)throws IOException;

· 字符管道流:PipedWriter、PipedReader。

连接处理:public void connect(PipedReader snk)throws IOException

 

范例:实现管道操作

package cn.mldn.demo;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.PipedInputStream;

import java. io. Pipedoutputstream;

public class JavaAPIDemo {

public static void main(String[] args) throws Exception{SendThreadsend = new SendThread();

ReceiveThread receive = new ReceiveThread();

send.getoutput().connect(receive.getInput());//进行管道连接

new Thread(send,"消息发送线程").start();

new Thread(receive,"消息接收线程").start();

}

class SendThread implements Runnable {

privatePipedoutputstream output;//管道的输出流

public SendThread(){

this.output=new Pipedoutputstream();//实例化管道输出流

}

public void run(){

for (int x = 0; x < 10; x++) {try{//利用管道实现数据的发送处理

this.output.write(

(“【第”+(x+1)+“次信息发送-”+Thr

 

www.mldn.cn\n").getBytes());

}catch (IOException e) {

e.printstackTrace();

}

}

try {

this.output.close();

}catch (IOException e) {

e.printstackTrace();

}

}

public PipedOutputStream getOutput(){}

return output;

}

}

class ReceiveThread implements Runnable

{private PipedInputStream input;

public ReceiveThread(){

this.input = new PipedInputStream();

}

this.output.close();

}catch (IOException e) {

e.printstackTrace();

}

}

public PipedOutputStream getOutput(){

return output;

}

class ReceiveThread implements Runnable {

privatePipedInputStream input;

public ReceiveThread(){

this.input = new PipedInputStream();

}

@Override.

public void run(){

byte data[]=new byte[1024];

int len = 0;

ByteArrayOutputStream bos = new ByteArrayOutputStream()

try{

while ( (len = this. input. read (data)! =- 1) {

bos.write(data,e,len);//所有的数据保存到内存流System.out.println("{"+Thread.currentThread().getN String(bos.toByteArray()));

bos.close();

}catch (IOException e) {

e.printstackTrace();

}

}

public PipedInputstream getInput(){

return input;

}

管道就类似于医院打点滴效果,一个只是负责发送,一个负责接收,中间靠一个管道连接。

相关文章
|
2天前
|
Java
[Java并发编程]浅谈管道
[Java并发编程]浅谈管道
|
3月前
|
Java API 数据库
IO流【转换流、字符输出流、数据流、对象流】(三)-全面详解(学习总结---从入门到深化)
IO流【转换流、字符输出流、数据流、对象流】(三)-全面详解(学习总结---从入门到深化)
31 0
|
8月前
管道流
管道流是一种用于将多个命令组合在一起的方法,以实现更高效和更简洁的命令行操作。在管道流中,输出 of一个命令被作为输入传递给下一个命令,以此类推,直到最终输出。cat file.txt命令将文件的内容输出到标准输出流。然后,grep URL命令将输出中所有包含“URL”字符串的行筛选出来。接下来,grep -v "www"命令将输出中所有不包含“www”字符串的行筛选出来。最后,tr -d '\n'命令将输出中的所有换行符删除。
39 0
|
9月前
|
C++
C++学习笔记_09 IO流 2021-04-26
C++学习笔记_09 IO流 2021-04-26
|
9月前
|
Java
知识单元八 输入输出流
知识单元八 输入输出流
77 0
|
10月前
|
存储 设计模式 Java
|
前端开发 Java 调度
IO流中「线程」模型总结
IO流中「线程」模型总结客户端与服务端进行通信交互,可能是同步或者异步,服务端进行「流」处理时,可能是阻塞或者非阻塞模式,理逻辑看就是:读取数据-业务执行-应答写数据的形式;
116 0
IO流中「线程」模型总结
|
存储 Java
Java开发——29.I/O流_处理流(缓冲流和转换流)
缓冲流和转换流,就是在某个流的基础上再添加不同的功能以实现对文件更为灵活的操作
Java开发——29.I/O流_处理流(缓冲流和转换流)
Java开发——32.I/O流_处理流(RandomAccessFile流)
操作文件内容,结合前面所学的File类,我们可以读取和写出文件,也可以修改文件的字符集编码...
Java开发——32.I/O流_处理流(RandomAccessFile流)
|
存储 Java
Java开发——30.I/O流_处理流(数据流、输入/输出流和打印流)
处理流就相当于外衣,每件衣服的作用不同,每个处理流的作用也不同,处理流可以实现多嵌套,即可以有多个处理流,每个处理流的功能不同!
Java开发——30.I/O流_处理流(数据流、输入/输出流和打印流)