博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java IO学习6:管道流
阅读量:5861 次
发布时间:2019-06-19

本文共 2077 字,大约阅读时间需要 6 分钟。

管道流(线程通信流)

管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream)、管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上,在PipedOutputStream类上有如下的一个方法用于连接管道:

public void connect(PipedInputStream snk)throws IOException

例子:线程之间用管道流进行通讯

1 import java.io.IOException;  2 import java.io.PipedInputStream;  3 import java.io.PipedOutputStream;  4  5 class Send implements Runnable{
6 7 private PipedOutputStream pos;//管道输出流 8 public Send(){
9 pos=new PipedOutputStream(); 10 } 11 @Override 12 public void run() {
13 String str="Hello World!"; 14 try {
15 pos.write(str.getBytes()); 16 } catch (IOException e) {
17 e.printStackTrace(); 18 } 19 try {
20 pos.close(); 21 } catch (IOException e) {
22 e.printStackTrace(); 23 } 24 } 25 public PipedOutputStream getPos() {
26 return pos; 27 } 28 } 29 30 class Receive implements Runnable{
31 32 private PipedInputStream pis;//管道输入流 33 public Receive(){
34 pis=new PipedInputStream(); 35 } 36 @Override 37 public void run() {
38 byte[] b=new byte[1024]; 39 int len=0; 40 try {
41 len=pis.read(b); 42 } catch (IOException e) {
43 e.printStackTrace(); 44 } 45 try {
46 pis.close(); 47 } catch (IOException e) {
48 e.printStackTrace(); 49 } 50 System.out.println(new String(b,0,len)); 51 } 52 public PipedInputStream getPis() {
53 return pis; 54 } 55 } 56 57 public class Test23 {
58 public static void main(String[] args) {
59 Send send=new Send(); 60 Receive receive=new Receive(); 61 try {
62 send.getPos().connect(receive.getPis());//连接管道 63 } catch (IOException e) {
64 e.printStackTrace(); 65 } 66 new Thread(send).start();//启动线程 67 new Thread(receive).start();//启动线程 68 } 69 }

转载地址:http://kqejx.baihongyu.com/

你可能感兴趣的文章
Flink流处理之窗口算子分析
查看>>
Working with Big Data on Alibaba Cloud
查看>>
linux之iptable案例
查看>>
C#制表符过滤处理方法
查看>>
注解的原理
查看>>
计划在CSDN学院推出系列视频课程《源码分析教程5部曲》
查看>>
live555学习之RTSP连接建立以及请求消息处理过程
查看>>
李礼辉:区分数字货币与数字代币,数字货币代表货币的未来
查看>>
马云谈NASA:投资让人更有创造力的技术
查看>>
二维码扫描&集合排序
查看>>
win8.1中输入中文显示问号的解决办法
查看>>
自己常用的字符实体
查看>>
我在Mesos上运行Docker容器的经验
查看>>
5分钟用Jitpack发布开源库
查看>>
ASP.NET MVC的Model元数据与Model模板:模板的获取与执行策略
查看>>
基于机器学习的web异常检测
查看>>
中国人工智能学会通讯——Bots:下一站王者 1.1 引言
查看>>
攻击者利用BlackEnergy销毁磁盘文件
查看>>
技术干货|如何在微服务架构下构建高效的运维管理平台?
查看>>
如何最大化自动补丁管理工具的作用?
查看>>