线程间的协作(3)——管道输入/输出流

2019独角兽企业重金招聘Python工程师标准>>> 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 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows简易版本 Redis 使用 demo样例(ssm框架下)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 在网上下载 windows 版本 的Redis 。下载了直接解压出来 &#xff1a; 2. 双击 redis-server.exe 启动服务&#xff08;如下图&#…

程序员的半衰期只有15年?

曾在Google工作负责过技术工作的科技编辑 Matt Heusser总结了他在Google的生活经历&#xff0c;得出结论&#xff1a; 作为程序员&#xff0c;你只有15年时间。Matt 写道当我在Google工作时&#xff0c;发现Google大部分人都是20出头的年轻人&#xff0c;他们经历的很多事情都是…

EasyNVR、EasyDSS二次开发之:RTMP、HLS流在web页面进行无插件播放示例Demo代码

不管是基于EasyNVR还是EasyDSS&#xff0c;都是支持无插件直播&#xff0c;这也是未来视频直播的一个趋势。对于传统的浏览器插件播放谁用谁知道&#xff1b; 以上是软件自带播放展示 背景需求 对于EasyNVR和EasyDSS的使用方式大概分为两大类&#xff0c;一类是直接将软件作为视…

11--移除重复节点

编写代码&#xff0c;移除未排序链表中的重复节点。保留最开始出现的节点。 示例1: 输入&#xff1a;[1, 2, 3, 3, 2, 1] 输出&#xff1a;[1, 2, 3] 示例2: 输入&#xff1a;[1, 1, 1, 1, 2] 输出&#xff1a;[1, 2]

信息图:程序员/开发人员实际在用哪些工具

BestVendor.com的工作人员在全球范围内采访了500名重要开发人员&#xff0c;在调查询问他们实际使用的工具后&#xff0c;制作了一张信息图&#xff0c;如下。 这张信息图覆盖10个方面的工具&#xff1a;Bug 追踪、数据库、开发框架、集成开发环境&#xff08;IDE&#xff09;、…

12-- 缺失的第一个正数

文章目录1.问题描述2.解题代码1.问题描述 给你一个未排序的整数数组&#xff0c;请你找出其中没有出现的最小的正整数。 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11,12] 输出: 1 提示&#xff1a; 你的算法的时间复杂度应…

java中的private public protected

1、public&#xff1a;public表明该数据成员、成员函数是对所有用户开放的&#xff0c;所有用户都可以直接进行调用 2、private&#xff1a;private表示私有&#xff0c;私有的意思就是除了class自己之外&#xff0c;任何人都不可以直接使用&#xff0c;私有财产神圣不可侵…

7款最流行的在线项目管理工具推荐

本文介绍一些非常流行的在线项目管理工具&#xff0c;希望你喜欢。 1. Apptivo 如果你是一个创业的或自由开发人员&#xff0c;或者属于一个小型专业团队&#xff0c;Apptivo这个项目管理软件很值得你你研究。实质上&#xff0c;它是一个基于Web的项目管理应用&#xff0c;让你…

VR全景看年评!PConline年度评测盛典等你来体验

【PConline 2016年度评测】又是一年春草绿&#xff0c;马上还有十天扒拉月2016年就快过完了。每年到这个时候&#xff0c;我们不禁都会拷问自己&#xff1a;你存到钱了么&#xff1f;娶到媳妇了么&#xff1f;买到房了么&#xff1f;答案是都没有&#xff01;哈哈&#xff0c;这…

swagger详解

1快速环境搭建 pom.xml文件中添加如下内容(看清楚再复制&#xff0c;此处不是全部内容) 1 <properties>2 ...3 <swagger.version>2.2.2</swagger.version>4 ...5 </properties>6 7 <dependency>8 …

13--长度最小的子数组

文章目录1.题目要求2.解题代码1.题目要求 给定一个含有 n 个正整数的数组和一个正整数 s &#xff0c;找出该数组中满足其和 ≥ s 的长度最小的连续子数组&#xff0c;并返回其长度。如果不存在符合条件的连续子数组&#xff0c;返回 0。 示例&#xff1a; 输入&#xff1a;…

Apache Subversion 1.7.2发布,开源版本控制工具

SVN&#xff08;Subversion&#xff09;已经发布了1.7的第二个维护版本。 Apache Subversion是一个开放源码、多用户的版本控制系统&#xff0c;支持非 ASCII 文本和二进制数据&#xff0c;支持可在本地访问或通过网络访问的数据库和文件系统存储库。相对于传统的RCS、CVS&…

14--用两个栈实现队列

文章目录1.题目详情2.解题代码1.题目详情 用两个栈实现一个队列。队列的声明如下&#xff0c;请实现它的两个函数 appendTail 和 deleteHead &#xff0c;分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素&#xff0c;deleteHead 操作返回 -1 ) 示例…

15--0~n-1中缺失的数字

文章目录1. 问题描述2. 解题代码1. 问题描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的&#xff0c;并且每个数字都在范围0&#xff5e;n-1之内。在范围0&#xff5e;n-1内的n个数字中有且只有一个数字不在该数组中&#xff0c;请找出这个数字。 示例 1: 输入: [0,…

JIRA 5.0.1 发布

Atlassian公司发布了JIRA 5.0.1版本&#xff0c;该版本相比JIRA 5.0有更多改进功能。1. 管理界面的改进 将更多页面管理转为对话框形式。例如点击页面右上方的“Add New”就可实现新增issue types、sub-tasks、field configurations 、screens。2. 性能改进 解决了基于Lucene 3…

16 --删除排序数组中的重复项

文章目录1.问题描述2.代码实现1.问题描述 给定一个排序数组&#xff0c;你需要在 原地 删除重复出现的元素&#xff0c;使得每个元素只出现一次&#xff0c;返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的…

17--合并两个有序数组

文章目录1.问题描述2.代码实现1.问题描述 给你两个有序整数数组 nums1 和 nums2&#xff0c;请你将 nums2 合并到 nums1 中&#xff0c;使 nums1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间&#xff08;空间…

Maven 添加本地 jar 包、添加依赖 jar 文件到本地 Maven 仓库、引用本地 jar

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 把要用的jar放在固定位置&#xff1a; 2.打开CMD&#xff0c;进入到libs文件夹: 3.运行如下命令&#xff1a; mvn install:install-…

黄文俊:Serverless小程序后端技术分享

欢迎大家前往腾讯云社区&#xff0c;获取更多腾讯海量技术实践干货哦~ 黄文俊&#xff0c;现任腾讯云SCF无服务器云函数高级产品经理&#xff0c;多年企业级系统开发和架构工作经验&#xff0c;对企业级存储、容器平台、微服务架构、无服务器计算等领域均有涉猎。今天讲的是怎么…

18--两数之和 II - 输入有序数组

文章目录1.问题描述2.解题代码1.问题描述 给定一个已按照升序排列 的有序数组&#xff0c;找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2&#xff0c;其中 index1 必须小于 index2。 说明: 返回的下标值&#xff08;index1 和 index2&a…