摘要:Exchanger 使用一个pipeline交换两个线程的数据,交换期间该Slot会被锁住,一般用于通信领域。
Exchanger 使用一个pipeline交换两个线程的数据,交换期间该Slot会被锁住,一般用于通信领域。
该类提供两个方法
// k为交换对象
exchange(V k)
//指定超时时间
exchange(V k, int timeOut, TimeUnit unit)
使用时,除了参数k必须外,返回值也必须使用k接收,否则会出现接收不到的数据的情况,如:
//生产者线程ProductBean bean= new ProductBean()// 设置Product属性bean.set()....// 生产完成,开始与消费者交换bean = Exchanger实例名.exchange(bean)
// 消费者线程ProductBean bean = new ProductBean();bean = Exchanger实例名.exchange(bean)
生产者将生产的ProductBean放入pipeline中,等待交换。消费者将空Bean放入pipeline等待交换。不论是生产者还是消费者都必须接收exchange方法的返回值,即将exchange的bean赋值给bean。当双方完成交换后,交换的bean就为exchange的返回值。
必须指定返回值的bean,否则该生产者生产的bean将不会与消费者的空bean进行交换。
关于该类的最详细解释当属于源码中的关于算法的注释,这一部分并没有显示在doc文档中,必须看源码才能看见。该注释中说到
The basic idea is to maintain a "slot", which is a reference to a Node containing both an Item to offer and a "hole" waiting to get filled in.
最基本的思想是维护一个Slot(槽),该Slot指向一个包含有一个用于交换的Item和一个等待填充的hole的Node。
该hole其实是用于接收交换的Node.
该算法解释分为五部分,
· Waiting
· Sizing
· Hashing
· Probing
· Padding
希望这篇文章可以帮助到你。总之,同学们,你想要的职坐标IT频道都能找到!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号