线程间的协作(3)——管道输入/输出流
2019独角兽企业重金招聘Python工程师标准>>>
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 blocke.printStackTrace();}}
}
class ReadPipe implements Runnable{PipedReader read=new PipedReader();public PipedReader getRead(){return read;}@Overridepublic 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;}@Overridepublic 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
线程间的协作(3)——管道输入/输出流相关推荐
- java线程协作_java 线程间的协作
[java]代码库import java.util.Vector; /** * 线程间的协作 */ public class WaitNotify { /** * 打印信息的类,是一个线程. */ s ...
- 线程join_Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
点击上方"Coder编程",选择"置顶公众号" 技术文章第一时间送达! 并发编程.png 每天进步一点,不做curd工程师与Api调用工程师 欢迎访问 个人博客 ...
- 线程间的协作(2)——生产者与消费者模式
2019独角兽企业重金招聘Python工程师标准>>> 1.何为生产者与消费者 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程. import java.util. ...
- 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
- Java并发编程—线程间协作方式wait()、notify()、notifyAll()和Condition
原文作者:Matrix海 子 原文地址:Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 目录 一.wait().notify()和notifyA ...
- JAVA线程间协作:wait.notify.notifyAll
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 线程间协作的两种方式:wait、notify、notifyAll和Condition
转载自 线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者模型:当 ...
- 从头开始进行CUDA编程:线程间协作的常见技术
转载:Deephub Imba 在前一篇文章中,我们介绍了如何使用 GPU 运行的并行算法.这些并行任务是那些完全相互独立的任务,这点与我们一般认识的编程方式有很大的不同,虽然我们可以从并行中受益,但 ...
- 看了这篇文章,就别担心线程间的通信了!
线程间的通信 1.为什么需要线程通信 线程是操作系统调度的最小单位,有自己的栈空间,可以按照既定的代码逐步的执行,但是如果每个线程间都孤立的运行,那就会造资源浪费.所以在现实中,我们需要这些线程间可以 ...
最新文章
- 客快物流大数据项目(八):Docker的安装和启动
- HDU - 5875 2016 ACM/ICPC 大连网络赛 H题 暴力
- hdu 3666 THE MATRIX PROBLEM
- Spring之DAO二
- set和multiset容器简介
- Gradle自定义插件
- linux传几百G文件,为什么我不推荐另外2种快速传几百G文件的方法!
- ios13看怎么airpods电量_你的iPhone升级iOS13了吗?iOS13升级前,必知的七大新功能...
- 计算机四进制表示形式,1.4.2 二进制数的四种表示形式(1)
- 500 Internal Server Error
- Windows phone 8.1 MessageBox 变了哦!
- 机器学习之线性回归(机器学习基石)
- Solaris系统环境变量声明方法
- 孙玄:“玄姐”,特立独行的架构师
- 软件设计师中级-笔记
- C#条形码图像生成库
- ckplayer 网页视频播放插件
- Windows资源管理器占用CPU过高
- extern 详细用法
- c语言中文拼音排序,为sqlite增加汉字拼音排序功能
热门文章
- cass生成曲线要素文件_几种常见的CASS字体异常问题,教你如何解决
- Adobe网页无法访问服务器,Adobe Acrobat时提示“无法访问网络位置\startup”
- c语言编写一个函数判断闰年,C语言:实现一个函数判断year是不是闰年
- php 数组区删除重复的,php – 从数组中删除重复的项目
- SSH项目中根据Hibernate的映射文件生成数据库表的方案:
- linux mint安装步骤,Linux mint 安装步骤
- 剑指offer:33-37记录
- 如何在Appscale下发布自己的应用(二)
- VS Studio报错无法解析的外部符号 _imp_XXXXXXXXX
- Java 序列化反序列化框架比较