类java.util.concurrent.Exchanger提供了一个同步点,在这个同步点,一对线程可以交换数据。每个线程通过exchange()方法的入口提供数据给他的伙伴线程,并接收他的伙伴线程提供的数据,并返回。
当在运行不对称的活动时很有用,比如当一个线程填充了buffer,另一个线程从buffer中消费数据的时候,这两个线程可以用
Exchanger来交换数据。当两个线程通过Exchanger交换数据的时候,这个交换对于两个线程来说是线程安全的。两个线程都会等到自己的程序运
行到Exchanger这个地方时,进行等待。然后再进行数据交换,交换完毕后,各自进行以后的程序流程。

Exchanger可以在两个线程之间交换数据,只能是2个线程,他不支持更多的线程之间互换数据。

当线程A调用Exchange对象的exchange()方法后,他会陷入阻塞状态,直到线程B也调用了exchange()方法,然后以线程安全的方式交换数据,之后线程A和B继续运行

最新文章

  1. java中如何实现多态
  2. python模块简介
  3. 使用SqlBulkCopy类来批量复制数据
  4. WPF元素可视化效果
  5. Jquery中的 height(), innerHeight() outerHeight()区别
  6. ecshop lang用法
  7. C#关于一个程序,只可以有一种实例的方法
  8. OpenStack的bridge_sto off的解释
  9. 【MySQL for Mac】在Mac终端导入&导出.sql文件
  10. Could not delete folder on Win7
  11. Prototype 原型模式
  12. 转:ReportViewer控件使用方法
  13. eclipse安装svn插件,在输入url后,一直卡在in progress界面不懂。
  14. QT Programming 1
  15. Maven使用(一)—— Maven的安装与全局配置
  16. TypeScript 快速学习
  17. 搭建 RabbitMQ Server 高可用集群【转】
  18. 【代码笔记】Web-JavaScript-JavaScript输出
  19. 解决 ModuleNotFoundError: No module named 'pip'
  20. PLSQL Developer启动失败

热门文章

  1. js 图片加载失败处理方法
  2. 一次应用js文件时遇到的怪异现象
  3. python中的单引号双引号和三引号
  4. 解决:cmd中运行monkeyrunner monkey_recorder.py报错: Can't open specified script file
  5. 显示隐藏文件 osx 10.10
  6. 原生js实现用鼠标画图
  7. spring发布RMI服务(-)
  8. ContextMenuStrip 动态添加多级子菜单
  9. 剑指offer--19.重建二叉树
  10. 如何使用FlashFXP上传网站程序?