博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程间的协作(3)——管道输入/输出流
阅读量:6720 次
发布时间:2019-06-25

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

hot3.png

1.管道输入/输出流类

    分为两类,字节流管道类(PipedInputStream/PipedOutputStream)和字符流管道类(PipedReader/ PipedWriter)。这两个IO流实现了可以在不同的任务中对同一个管道进行读写操作,这个模型可以看成是“生产者消-费者模式”的变体,管道是一个阻塞队列。

import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;import java.io.PipedReader;import java.io.PipedWriter;import java.util.Scanner;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;public class PipeIO {	public static void main(String[] args) {		ReadPipe read=new ReadPipe();		WritePipe write=new WritePipe();		ExecutorService exec=Executors.newCachedThreadPool();		try {			write.getWriter().connect(read.getRead());;//必须将两个管道进行连接,然后才可进行线程间的数据交互			exec.execute(read);			exec.execute(write);		} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}}class ReadPipe implements Runnable{	PipedReader read=new PipedReader();	public PipedReader getRead(){		return  read;	}	@Override	public void run() {		try {			while(true){				System.out.println("read:"+(char)read.read()+";");//当前线程从管道读取数据			}			} catch (IOException e) {			// TODO: handle exception		}	}}class WritePipe implements Runnable{	PipedWriter writer=new PipedWriter();	public PipedWriter getWriter(){		return  writer;	}	@Override	public void run() {		try {			while(true){				for(char a='A';a<='z';a++){					writer.write(a);//当前线程向管道输出数据					TimeUnit.SECONDS.sleep(2);				}			}			} catch (IOException e) {			// TODO: handle exception		}catch (InterruptedException e) {			// TODO: handle exception		}	}}

 

转载于:https://my.oschina.net/ProgramerLife/blog/1806422

你可能感兴趣的文章
Linux下的ping命令
查看>>
JAVA使用JDOM创建简单xml
查看>>
mac 上安装 Android SDK
查看>>
angular 1.x select 默认选中
查看>>
input accept属性限制文件上传格式
查看>>
JQuery扩展:TextArea在光标处插入文本
查看>>
支付宝接口使用文档说明 支付宝异步通知
查看>>
前端基础快速学习-Dom
查看>>
Java面向对象深入篇 (二)
查看>>
Hibernate get 和 load方法区别
查看>>
企业实施云ERP软件需注意哪些关键问题
查看>>
poj 2752 Seek the Name, Seek the Fame
查看>>
spring的注解注入
查看>>
在GIF图片上打水印,图片合成
查看>>
常见排序2---归并排序
查看>>
使用ln创建软链接碰到的小问题
查看>>
Android Browser学习十二 UrlInputView(2) 网络联想数据的获取详细
查看>>
ASP.NET MVC 4 for Visual Studio 2010 下载地址
查看>>
PHP配置MS SQLServer数据库连接
查看>>
HTML链接
查看>>