4.Java IO-管道
来源:互联网 发布:淘宝怎么买原味内衣 编辑:程序博客网 时间:2024/06/16 02:45
本文是在Java IO: Pipes翻译而来。欢迎大家联系我,跟我一起交流。本人水平有限,如果错误欢迎指正。
管道给予同一个java虚拟机中两个线程通信的能力。所以管道也是数据的输入源和输出目标。
你可以用管道与不同java虚拟机(不同线程)中的线程通信。java中管道的概念和Unix/Linux中管道的概念是有区别的。jiava中,通信双方必须在同一个进程中,而且还是不一样的线程。
通过Java IO创建管道
通过java IO的管道输出流类(PipedOutputStream )和管道输入流类(PipedInputStream ) 。通过一个线程将数据写入管道输入流,然后可以由另一个线程从管道输出流中读取数据。
Java 管道例子
下面是一个简单的例子,如何将管道输入流连接到管道输出流:
import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;public class PipeExample { public static void main(String[] args) throws IOException { final PipedOutputStream output = new PipedOutputStream(); final PipedInputStream input = new PipedInputStream(output); Thread thread1 = new Thread(new Runnable() { @Override public void run() { try { output.write("Hello world, pipe!".getBytes()); } catch (IOException e) { } } }); Thread thread2 = new Thread(new Runnable() { @Override public void run() { try { int data = input.read(); while(data != -1){ System.out.print((char) data); data = input.read(); } } catch (IOException e) { } } }); thread1.start(); thread2.start(); }}
你也可以用它们connect()方法连接俩个管道流。管道输出流和管道输入流都有connect()方法,这个方法用来相互连接。
管道和线程
记住,当运用俩个已连接的管道流,将一个流交给一个线程,另一个流交给另一个线程。在流上调用read()和write()阻塞了,意味着如果你在同一个线程中又读又写,这有可能导致线程自己死锁。
管道替代者
比起管道,有很多其他的方式可以在同一个java虚拟机中线程间通信。实际上,线程间大部分交换的是完整的对象,而不是交换原始字节数据。但是如果你需要在进程间交换原始字节数据,Java IO管道是可以用的。
0 0
- 4.Java IO-管道
- Java IO: 管道
- Java IO: 管道
- JAVA IO-管道流
- Java IO:管道
- Java IO: 管道
- Java IO: 管道
- Java IO 管道流
- Java IO: 管道
- Java IO _管道流
- java IO之管道流
- JAVA IO之管道流总结大全
- JAVA IO之管道流总结大全
- JAVA IO之管道流总结
- JAVA IO之管道流总结大全
- java.io包 管道流使用案例
- 【JAVA IO】_管道流笔记
- JAVA IO流(管道流)
- WKWebView API精讲(OC)
- Linux常用命令
- 【Android】输入金额时自动补加一个元,金额删干净时,元字自动消失
- LeetCode-90-Subsets II(回溯)-Medium
- 匿名对象,构造函数,this关键字
- 4.Java IO-管道
- 如何在git.oschina.net部署项目
- httpServlet应用
- c#.net 生成清晰缩略图的解决方案
- OpenGL与OpenCV实现增强现实
- << React Native 入门与实战>>----第2章 React Native开发基础
- js BOM对象
- 代码管理工具
- 数据库问题