Java IO: 管道
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)
Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力。所以管道也可以作为数据源以及目标媒介。
你不能利用管道与不同的JVM中的线程通信(不同的进程)。在概念上,Java的管道不同于Unix/Linux系统中的管道。在Unix/Linux中,运行在不同地址空间的两个进程可以通过管道通信。在Java中,通信的双方应该是运行在同一进程中的不同线程。
通过Java IO创建管道
可以通过Java IO中的PipedOutputStream和PipedInputStream创建管道。一个PipedInputStream流应该和一个PipedOutputStream流相关联。一个线程通过PipedOutputStream写入的数据可以被另一个线程通过相关联的PipedInputStream读取出来。
Java IO管道示例
这是一个如何将PipedInputStream和PipedOutputStream关联起来的简单例子:
你也可以使用两个管道共有的connect()方法使之相关联。PipedInputStream和PipedOutputStream都拥有一个可以互相关联的connect()方法。
管道和线程
请记得,当使用两个相关联的管道流时,务必将它们分配给不同的线程。read()方法和write()方法调用时会导致流阻塞,这意味着如果你尝试在一个线程中同时进行读和写,可能会导致线程死锁。
管道的替代
除了管道之外,一个JVM中不同线程之间还有许多通信的方式。实际上,线程在大多数情况下会传递完整的对象信息而非原始的字节数据。但是,如果你需要在线程之间传递字节数据,Java IO的管道是一个不错的选择。
Java IO: 管道相关推荐
- Java IO: PipedInputStream
PipedInputStream可以从管道中读取字节流数据,代码如下: 01 InputStream input = new PipedInputStream(pipedOutputStream); ...
- Java IO: PipedOutputStream
转载自 Java IO: PipedOutputStream 译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) PipedOutputSt ...
- Java IO: 字符流的Piped和CharArray
转载自 Java IO: 字符流的Piped和CharArray 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍管道与字符数组相 ...
- Java基础17:Java IO流总结
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a724888/article/details/80201802 这位大侠,这是我的公众号:程序员江湖 ...
- 断开的管道 java.io.IOException: Broken pipe 解决方法
断开的管道 java.io.IOException: Broken pipe 解决方法 一.Broken pipe产生原因分析 1.当访问某个服务突然服务器挂了,就会产生Broken pipe; 2. ...
- 系统学习 Java IO (六)----管道流 PipedInputStream/PipedOutputStream
目录:系统学习 Java IO---- 目录,概览 PipedInputStream 类使得可以作为字节流读取管道的内容. 管道是同一 JVM 内的线程之间的通信通道. 使用两个已连接的管道流时,要为 ...
- java io broken pipe解决_报错!!java.io.IOException: 断开的管道 中文报错?Broken pipe?这次发生的报错不影响业务,已有解决方案...
org.apache.catalina.connector.ClientAbortException: java.io.IOException: 断开的管道 at org.apache.catalin ...
- JAVA IO流(内存流、管道流、打印流)
1.内存操作流 2.管道流 3.字节.字符转换流 4.字符的编码问题 5.打印流 6.System类对IO的支持 7.对象序列化 内存操作流 FileInputStream 和FileOutputSt ...
- (十二)Core Java IO流(Properties,序列化,管道流,字符编码)-03 (108)
目录 : 41 ). IO流(创建java文件列表) 42 ). IO流(Properties简述) 43 ). IO流(Properties存取) 44 ). IO流(Pr ...
最新文章
- 用于RGB-D显著目标检测的自监督表示学习
- 如何用python写游戏_一步步教你怎么用python写贪吃蛇游戏
- Just $h$-index HDU - 6278(主席树找区间大于等于k的个数)
- Web在线操作Office之Word
- 错误Cannot resolve org.springframework.data:spring-data-redis:2.2.6 RELEASE
- php自动滚动到页尾,让DOM元素自动滚到视野内ScrollIntoView
- win32汇编实现一个时钟
- 计算机丢失gdiplus黑屏,电脑丢失gdiplus.dll黑屏,黑屏时还自动重启还怎么处理
- golang c10k问题
- php四段拼接ip,合并相同的ip段算法
- (15)FPGA与CPU区别
- 微信小程序发送微信公众号模板消息
- excel快速选择数据的4种方法
- 1叉叉加速器分析_加速分析
- 7-2 愿天下有情人都是失散多年的兄妹
- 《运营力——微信公众号 设计 策划 客服 管理 一册通》一一1.1 创博公众号团队简介...
- 基于STM32单片机的密码锁(Proteus仿真+程序+报告)
- 秒表计时器怎么读_秒表使用说明书
- bp神经网络原理 实现过程,BP神经网络的实现包括
- Linux 查找项目路径
热门文章
- JDK线程池的ThreadFactory
- java使用ssh连接Linux并执行命令
- centos源码安装mysql5.7.25-boost
- (原創) 标准的makefile写法 (C/C++)
- 基于jQuery实现富文本的拖拽和修改大小
- 单片机向左,嵌入式向右
- [shell] 让你提升命令行效率的 Bash 快捷键 [完整版]
- 分析PoS的存币挖矿和币价格——如何设计PoS挖矿才有利于吸引用户?
- 我需要运行自己的节点吗?
- BCH大区块导致中心化其实是伪命题