中文译为:交换器。

主要作用:两个线程之间进行数据交换。

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数据交换相关推荐

  1. 并发工具类(四)两个线程进行数据交换的Exchanger

    简介 Exchanger(交换者)是一个用于线程间协作的工具类.Exchanger用于进行线程间的数据交换.它提供一个同步点,在这个同步点两个线程可以交换彼此的数据.这两个线程通过exchange方法 ...

  2. c语言链表交换,求单链表的数据交换解决思路

    当前位置:我的异常网» C语言 » 求单链表的数据交换解决思路 求单链表的数据交换解决思路 www.myexceptions.net  网友分享于:2013-11-04  浏览:14次 求单链表的数据 ...

  3. 常用的数据交换格式有哪些_Linux后台开发6大常用的开源库,让你在同行中脱颖而出...

    后台开发,语言主要是 c 和 c++ , 这里简单罗列一下工作中用的很频繁的那些开源软件 1. OpenSSL openssl OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法.常用的密钥 ...

  4. 实现不同域(Domain)之间的数据交换(转)

    引言 前些天在对公司原有的 web 应用进行改版时遇到一个问题,当时需要从原有的应用中提取出一部分,用一个更为通用的来进行替换,并且仍然保留原有的应用接口.原有的应用属于 news.mycompany ...

  5. XML和JSON 数据交换格式

    为什么80%的码农都做不了架构师?>>>    一.什么是数据交换格式? 客户端与服务器常用数据交换格式xml.json.html 二.数据交换格式应用场景 移动端(安卓.IOS)通 ...

  6. 4.1.2 数据交换方式

    4.1.2 数据交换方式

  7. 互联网协议 — 数据交换技术

    目录 文章目录 目录 数据交换技术 传统的 2 层交换技术 具有路由功能的 3 层交换技术 具有网络服务功能的 7 层交换技术 数据交换技术 交换技术是随着电话通信的发展和使用而出现的通信技术.电话刚 ...

  8. NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息...

    NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息.也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来时,它更加易于管理和易读.Netflo ...

  9. 【计算机网络】网络层 : 总结 ( 功能 | 数据交换 | IP 数据报 | IPv4 地址 | IPv6 地址 | 路由选择协议 | 路由算法 )★★★

    文章目录 一.网络层功能 二.数据交换方式 ★ 三.IP 数据报 ★ 四. IPv4 地址 ★★ 1 . IP 地址 发展 : 2 . 分类 IP 地址 3 . NAT 转换 4 . 子网划分 5 . ...

最新文章

  1. 基于NB-IoT的智慧路灯监控系统(NB-IoT专栏—实战篇4:PC应用开发)
  2. 为了一窥国足输韩国之后人们的评论,我爬了懂球帝App
  3. 苹果欲借免费纳米SIM卡技术控制行业标准
  4. 配置MaxCompute任务消费监控告警,避免资源过度消费
  5. python的简单程序代码_小白学编程?从一个简单的程序开始学习Python编程
  6. apache 设置session超时时间_深入分析 Session 和 Cookie,看这篇就对了
  7. ImageFolder使用方法
  8. MYSQL基本知识:TRUNCATE和DELETE的区别
  9. python turtle代码示例-Python turtle.left方法代码示例
  10. mysql innodb 分区_MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
  11. 梯度下降优化算法综述
  12. 《我的成功可以复制》读后感这一、两天可以静下心来,将唐骏先生写的《我...
  13. RFSoC应用笔记 - RF数据转换器 -15- API使用指南之Libmetal与结构体说明
  14. leetcode 14天刷题计划-数据结构入门(共计33题)
  15. 翟菜花:5G时代的顺风车,智能音箱该怎么坐?
  16. Springboot项目配置404错误页面
  17. statement的意思和用法
  18. 炎炎夏日送清凉 狠抓实干保工期 西安华南城领导慰问工地一线建筑工人
  19. selenium java 高级技巧篇(必学)美化测试报告(十三)
  20. NYOJ 737DP

热门文章

  1. 前端常用的CDN静态资源库
  2. mysql atoi_atoi()
  3. html5卷轴动画制作,几种逼真卷轴动画的制作方法
  4. 图论学习六之Strongly connected components强连通分量
  5. php的缺点_深入解读PHP语言的优劣势,看清代码的本质
  6. Java:使用split方法时忽略中英文的符号区别
  7. edge浏览器 开启java_如何让你的Edge浏览器跑得更快?几个步骤解放它!
  8. Python-之基础篇3
  9. 读取与修改其他程序的数据Read/WriteProcessMemory
  10. ftp服务器上的文件发生错误450,FTP常见错误解决办法