java线程间通信管道_通过管道进行线程间通信
管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。通过管道,实现不同线程间的通信,而无须借助类似共享变量、临时文件之类的东西。
在java的JDK中提供了4个类来使线程间可以进行通信:管道字节流 PipedInputStream,PipedOutputStream
管道字符流 PipedReader,PipedWriter
案例
应用场景:1个线程负责写数据,1个线程负责接收数据。
写入线程:class ThreadOut extends Thread {
PipedOutputStream out;
public ThreadOut(PipedOutputStream out) {
this.out = out;
}
@Override
public void run() {
System.out.println("write:");
try {
String message = "hello world! You will be destoryed";
out.write(message.getBytes());
System.out.println("写入数据------" + message);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
接收线程:class ThreadRead extends Thread {
PipedInputStream input;
public ThreadRead(PipedInputStream input) {
this.input = input;
}
@Override
public void run() {
System.out.println("read:");
try {
byte[] buffer = new byte[10];
int i = -1;
while ((i=(input.read(buffer))) != -1) {
System.out.println("读取数据----"+new String(buffer,0,i));
}
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
启动类:public class TestPipe {
public static void main(String[] args) throws IOException {
PipedInputStream inputStream = new PipedInputStream();
PipedOutputStream outputStream = new PipedOutputStream();
inputStream.connect(outputStream);
ThreadOut threadOut = new ThreadOut(outputStream);
ThreadRead threadRead = new ThreadRead(inputStream);
threadOut.start();
threadRead.start();
}
}
java线程间通信管道_通过管道进行线程间通信相关推荐
- python 命名管道_命名管道实践
命名管道技术实验 管道介绍 管道(Pipe)是一种进程间的通信机制,Windows.Linux和UNIX都使用这种机制. 管道是通过I/O接口存取的字节流创建管道后,通过使用操作系统的任何读或写I/O ...
- 61-Linux_管道_有名管道
文章目录 管道 1.有名管道 (1)创建有名管道 (2)有名管道演示进程间通信 管道 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递.调用pipe系统函数即可创建一个管道.有如 ...
- 51单片机串口通信模板_深入理解51单片机串口通信及通信实例
串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...
- centos java 时间差8个小时_解决Centos7本机时间与实际时间相差8小时
GPS系统中有两种时间区分,UTC就0时区的时间,CTS为本地时间,如北京为早上八点(东八区),UTC时间比北京时晚八小时; CTS:China Standard Time,UTC+8:00 中国沿海 ...
- 485通信原理_上位机开发之单片机通信实践
经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的.PLC的本质就是单片机,在 ...
- 485通信原理_上位机开发之单片机通信实践(一)
微信号 :thinger_swj微博:@新阁程序园扫码关注 经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是 ...
- 微信即时通信原理_福州5号线一期通信系统集成中标
福州市轨道交通5号线一期工程通信系统集成采购项目中标候选人公示 招标项目概况 工程项目名称:福州市轨道交通5号线一期工程通信系统集成采购项目(重新招标) 招标人名称:福州地铁集团有限公司 建设规模:2 ...
- 树莓派串口通信编码_树莓派3B/3B+与Rosbot通信02:USB与串口通信
前言:在上一篇中,我们已经下载和安装好通信的各种库和其他东西,在这一篇中我们将介绍如何将树莓派与Rosbot连接设置和基础的代码编程. 串口通信 串口设置 1.设置波特率:进入minicom配置界面 ...
- python写tcp通信程序_一个简单的基于TCP通信的服务器端与客户端程序
一,概述 1,客户端: 创建客户端套接字对象 和服务端套接字建立连接 发送数据 接收数据 关闭客户端套接字 2,服务器端: 创建服务端端套接字对象 绑定端口号 设置监听 等待接受客户端的连接请求 接收 ...
最新文章
- 《软件测试实践--测试Web MSN》 之我的学习笔记(一)
- Xamarin Essentials教程实现数据的传输功能实例
- 方位话机同一号码双链路注册实现冗余
- JDK 14 调试神器了解一下?
- matlab输入集合,matlab关于集合的操作大全
- nginx 响应服务器静态,405 Not Allowed,nginx静态文件响应post请求
- 2018牛客网暑期ACM多校训练营(第十场)J	Rikka with Nickname(二分,字符串)
- Palo Alto Networks漏洞防护扩展至云端
- android申请多个运行时权限,Android 6.0(API 23) 运行时权限(二)之权限申请
- [Ext JS 4] 实战之Grid, Tree Gird编辑Cell
- systemctl命令_开发者必备Linux命令
- 主进程和子进程_Python - 进程-线程-协程
- python怎么获取lol皮肤名称_英雄联盟手游免费皮肤获取攻略 LOL免费皮肤怎么得...
- word英文字体下载 如Caecilia LT Std
- 腾讯android一键root工具,腾讯一键Root工具
- iOS 【使用自定义字体-苹方字体】
- uva live 4043 km
- 微软TTS语音引擎编程入门
- 股票成交量和成交笔数解释
- 长铗:搭积木无法建筑DeFi摩天楼,Bytom用工程思维构建MOV宇宙
热门文章
- JPA(七):映射关联关系------映射双向多对一的关联关系
- 【SVN】1. SVN 安装部署
- CocoaPods使用 主要带图。转载。
- 解决博客园模版错误排版的一个问题
- Citrix XenApp 6.0 发布应用程序时 ICO 错误的解决方法
- 部署SQL AZURE的客户端管理工具,云计算体验之二
- Delphi - 新语法介绍之For In
- C# 中的委托和事件(1)
- c语言延时函数_介召几个frida在安卓逆向中使用的脚本以及延时Hook手法
- 如何优化计算机网络课程,计算机论文:探究如何优化计算机网络课程教学方法.docx...