线程间的协作(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;如下图&#…

Redhat7.3安装配置Telnet详细教程

请参考&#xff1a;https://blog.csdn.net/weixin_39934520/article/details/84835949 谢谢楼主分享&#xff01;

程序员的半衰期只有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;一类是直接将软件作为视…

jsp中%@ % 与% % 与%! %

<% %> 有个符号的&#xff0c;叫做指令用来提供整个JSP 网页相关的信息&#xff0c;并且用来设定JSP网页的相关属性&#xff0c; 例如&#xff1a;网页的编码方式、语法、信息等。<% %>这个叫做小脚本&#xff0c;是写java代码的<%! %>这个是jsp中脚本声明&a…

Hadoop的学习路线图

目录&#xff1a;.1.Hadoop家族产品2.Hadoop家族学习路线图 Hadoop家族产品截止到2013年&#xff0c;根据cloudera的统计&#xff0c;Hadoop家族产品已经达到20个&#xff01;接下来&#xff0c;我把这20个产品&#xff0c;分成了2类。第一类&#xff0c;是我已经掌握的第二…

new TypeToken<List>>(){}.getType() 是什么意思

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 项目中代码&#xff1a; List<AppVersion> redisList new Gson().fromJson(json, new TypeToken<List<AppVersion>…

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;、…

class特性

每个HTML元素都可以附带一个class特性。有时候&#xff0c;你希望有一种方法可以指定多个元素并将这些元素和页面上的其他元素区分出来&#xff0c;而不是单独指定文档中的某个元素。 <!DOCTYPE html> <!-- To change this license header, choose License Headers in…

Xcode代码提示联想功能失效,按command键点不进去类库,提示“?”

一大早电脑重启了下&#xff0c;打开项目之后出现了一堆问号&#xff0c;怀疑是Xcode 抽风了&#xff0c;本着怀疑的态度&#xff0c;新建了项目&#xff0c;一波操作下来是正常的&#xff0c;代码能联想&#xff0c;command也好使。于是在网上找答案&#xff0c;终于在这里找到…

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;…

HttpServletRequest 常用方法讲解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Web服务器收到一个http请求&#xff0c;会针对每个请求创建一个HttpServletRequest和HttpServletResponse对象&#xff0c; 从客户端取…

object中的toString方法

任何一个类都是从Object类继承下来的&#xff0c;因此在任何一个类里面都可以重写这个toString()方法。toString()方法的作用是当一个引用对象和字符串作连接的时候&#xff0c;或者是直接打印这个引用对象的时侯&#xff0c;这个引用对象都会自动调用toString()方法&#xff0…

东网科技荣膺2016中国大数据最佳实践奖

11月24日&#xff0c;由中国软件网主办的数据趴活动圆满落幕&#xff0c;活动现场隆重揭晓了大数据领域的重磅榜单&#xff0c;旨在对大数据领域中表现突出的企业、人物进行表彰。东网科技有限公司(以下简称“东网科技”)凭借大数据运营支撑平台及在环保、烟草、教育、政府等行…