Exchanger数据交换
中文译为:交换器。
主要作用:两个线程之间进行数据交换。
Exchanger提供了一个同步点,当线程执行到同步点时,会被阻塞,直到双方完成了数据交换,才继续往下执行。
Tom和Jerry例子
启动两个线程,让其完成一次简短的对话。
Tom
public class Tom implements Runnable {private Exchanger<String> exchanger;public Tom(Exchanger exchanger) {this.exchanger = exchanger;}@Overridepublic void run() {String name = Thread.currentThread().getName();try {System.out.println(name + ":who?");//发送数据并接受,阻塞方法String who = exchanger.exchange("who");System.out.println(name + ":hello," + who);} catch (InterruptedException e) {e.printStackTrace();}}
}
Jerry
public class Jerry implements Runnable {private Exchanger<String> exchanger;public Jerry(Exchanger exchanger) {this.exchanger = exchanger;}@Overridepublic void run() {String name = Thread.currentThread().getName();try {System.out.println(name + ":Jerry");//发送数据并接受,阻塞方法exchanger.exchange("Jerry");} catch (InterruptedException e) {e.printStackTrace();}}
}
输出如下:
Tom:who?
Jerry:Jerry
Tom:hello,Jerry
Exchanger数据交换相关推荐
- 并发工具类(四)两个线程进行数据交换的Exchanger
简介 Exchanger(交换者)是一个用于线程间协作的工具类.Exchanger用于进行线程间的数据交换.它提供一个同步点,在这个同步点两个线程可以交换彼此的数据.这两个线程通过exchange方法 ...
- c语言链表交换,求单链表的数据交换解决思路
当前位置:我的异常网» C语言 » 求单链表的数据交换解决思路 求单链表的数据交换解决思路 www.myexceptions.net 网友分享于:2013-11-04 浏览:14次 求单链表的数据 ...
- 常用的数据交换格式有哪些_Linux后台开发6大常用的开源库,让你在同行中脱颖而出...
后台开发,语言主要是 c 和 c++ , 这里简单罗列一下工作中用的很频繁的那些开源软件 1. OpenSSL openssl OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法.常用的密钥 ...
- 实现不同域(Domain)之间的数据交换(转)
引言 前些天在对公司原有的 web 应用进行改版时遇到一个问题,当时需要从原有的应用中提取出一部分,用一个更为通用的来进行替换,并且仍然保留原有的应用接口.原有的应用属于 news.mycompany ...
- XML和JSON 数据交换格式
为什么80%的码农都做不了架构师?>>> 一.什么是数据交换格式? 客户端与服务器常用数据交换格式xml.json.html 二.数据交换格式应用场景 移动端(安卓.IOS)通 ...
- 4.1.2 数据交换方式
4.1.2 数据交换方式
- 互联网协议 — 数据交换技术
目录 文章目录 目录 数据交换技术 传统的 2 层交换技术 具有路由功能的 3 层交换技术 具有网络服务功能的 7 层交换技术 数据交换技术 交换技术是随着电话通信的发展和使用而出现的通信技术.电话刚 ...
- NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息...
NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息.也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来时,它更加易于管理和易读.Netflo ...
- 【计算机网络】网络层 : 总结 ( 功能 | 数据交换 | IP 数据报 | IPv4 地址 | IPv6 地址 | 路由选择协议 | 路由算法 )★★★
文章目录 一.网络层功能 二.数据交换方式 ★ 三.IP 数据报 ★ 四. IPv4 地址 ★★ 1 . IP 地址 发展 : 2 . 分类 IP 地址 3 . NAT 转换 4 . 子网划分 5 . ...
最新文章
- 基于NB-IoT的智慧路灯监控系统(NB-IoT专栏—实战篇4:PC应用开发)
- 为了一窥国足输韩国之后人们的评论,我爬了懂球帝App
- 苹果欲借免费纳米SIM卡技术控制行业标准
- 配置MaxCompute任务消费监控告警,避免资源过度消费
- python的简单程序代码_小白学编程?从一个简单的程序开始学习Python编程
- apache 设置session超时时间_深入分析 Session 和 Cookie,看这篇就对了
- ImageFolder使用方法
- MYSQL基本知识:TRUNCATE和DELETE的区别
- python turtle代码示例-Python turtle.left方法代码示例
- mysql innodb 分区_MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
- 梯度下降优化算法综述
- 《我的成功可以复制》读后感这一、两天可以静下心来,将唐骏先生写的《我...
- RFSoC应用笔记 - RF数据转换器 -15- API使用指南之Libmetal与结构体说明
- leetcode 14天刷题计划-数据结构入门(共计33题)
- 翟菜花:5G时代的顺风车,智能音箱该怎么坐?
- Springboot项目配置404错误页面
- statement的意思和用法
- 炎炎夏日送清凉 狠抓实干保工期 西安华南城领导慰问工地一线建筑工人
- selenium java 高级技巧篇(必学)美化测试报告(十三)
- NYOJ 737DP
热门文章
- 前端常用的CDN静态资源库
- mysql atoi_atoi()
- html5卷轴动画制作,几种逼真卷轴动画的制作方法
- 图论学习六之Strongly connected components强连通分量
- php的缺点_深入解读PHP语言的优劣势,看清代码的本质
- Java:使用split方法时忽略中英文的符号区别
- edge浏览器 开启java_如何让你的Edge浏览器跑得更快?几个步骤解放它!
- Python-之基础篇3
- 读取与修改其他程序的数据Read/WriteProcessMemory
- ftp服务器上的文件发生错误450,FTP常见错误解决办法