打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java程序员修炼之路线程篇十七:Exchanger

  我们通常把Exchanger称为"交换器",它提供了线程之间交换对象的同步点。"交换器"Exchanger提供了exchange方法来完成线程之间对象的交换,线程会向exchange方法传递对象同时接收其它线程的返回对象。

  Exchanger位于java.util.concurrent包下,我们可以通过一个无参的构造器完成它的对象创建。Exchanger提供了两个方法来完成对象的交换,分别是:1.exchange(V x)方法会在交换点上等待其它线程到达,同时将对象传递进去,之后接收其他线程的对象作为其返回。2.exchange(V x,long timeout,TimeUnit unit)方法与前一个方法功能是一样的,唯一的区别是增加了等待时间上的限制。为了演示"交换器"的使用,我们看一个实例:

  

  

  

  例子中创建了两个线程对象,一个是Apple对象,另一个是Orange对象。Apple对象把"apple"字符串传递到交换器中,得到了"orange"字符串的返回,并把它打印了出来。Orange对象把"orange"字符串传递到交换器中,得到了"apple"字符串的返回,并把它打印了出来。在Testing类中创建了交换器对象,并把这个交换器传递到两个线程对象中,启动线程分别输出结果。交换器通常应用在诸如管道设计的程序中,在遗传算法上也有广泛的应用。下一篇文章我将跟大家聊一聊Semaphore的应用,请大家持续关注。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【openstack】openstack中的消息队列
Java开发学习之什么是线程池?Java学习
三张图彻底了解Java中字符串的不变性
5. 数据结构
Java泛型笔记
Java接口 详解(二)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服